2014-11-07 25 views
6

Mam problem z apk KitKat podczas tringy, aby uzyskać dostęp do tokena usług konta Google, Google Music w moim przypadku. Tak więc, jeśli użytkownik próbuje uzyskać żeton początkowo stosując kolejną metodę:Konto Google dostaje Token

public String getAuthToken(Account account) 
      throws AuthenticatorException, IOException { 
     String s1; 
     if (account == null) { 
      Log.e("MusicAuthInfo", "Given null account to MusicAuthInfo.getAuthToken()", new Throwable()); 
      throw new AuthenticatorException("Given null account to MusicAuthInfo.getAuthToken()"); 
     } 
     String s = getAuthTokenType(mContext); 
     try { 
      s1 = AccountManager.get(mContext).blockingGetAuthToken(account, s, true); 
     } catch (OperationCanceledException operationcanceledexception) { 
      throw new AuthenticatorException(operationcanceledexception); 
     } 
     if (s1 == null) { 
      throw new AuthenticatorException("Received null auth token."); 
     } 

     return s1; 
    } 

tu dostać s1 == null i powiadamiania systemu Push:

notification

Gdy kran użytkownika w powiadomieniu pojawić następne okno dialogowe:

dialog

Kiedy użytkownik kliknij "OK", wszystkie kolejne iteracje coraz tokena get succe ss.

Pytanie: Jak obejść to potwierdzenie lub wyświetlić tylko okno dialogowe, bez kliknięcia i powiadomienia?

Odpowiedz

2

To nie jest bezpośrednia odpowiedź na Twoje pytanie, ale możesz korzystać z Usług Google Play.

String token = GoogleAuthUtil.getToken(context, userEmail, "oauth2:https://mail.google.com/"); 

Wystarczy określić zakres Oauth2, którego potrzebujesz. Na przykład w Google+ potrzebujesz "https://www.googleapis.com/auth/plus.login" zamiast tego, co zamieszczam w fragmencie kodu do Gmaila. Możesz także określić wiele zakresów w jednym żądaniu tokena. Prośba o pozwolenie pojawia się natychmiast.

Można przeczytać o tym tutaj: Authorizing with Google for REST APIs, Login scopes

+0

nie mogę znaleźć w Google Play dla zakresu muzyki sservice – smail2133

+0

Dobrze, aby uzyskać zakres dla tokena najpierw trzeba mieć pomysł, który API masz wyglądać zakresu. Wśród dostępnych interfejsów API nie ma specjalnie Muzyki Google Play. Możesz sprawdzić je wszystkie tutaj: [Plac zabaw OAuth 2.0] (https://developers.google.com/oauthplayground/) i upewnij się, że interfejs API jest włączony w [Konsoli programisty Google] (https: // console .developers.google.com/project). Sprawdź, który interfejs API zapewnia wymagane uprawnienia. Na przykład te z Google+ mogą je zawierać. – Chris

-1

rozwiązany. Potrzebujesz skorzystać z tej metody:

Bundle result = AccountManager.get(activity).getAuthToken(account, s, new Bundle(), activity, new AccountManagerCallback<Bundle>() { 
    @Override 
    public void run(AccountManagerFuture<Bundle> future) { 
     try { 
      Log.e("xxx", future.getResult().toString()); 
     } catch (OperationCanceledException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } catch (AuthenticatorException e) { 
      e.printStackTrace(); 
     } 
    } 

}, null).getResult();