2014-11-07 14 views
6

Ho un problema con kitkat api mentre sto cercando di ottenere il token di accesso ai servizi dell'account Google, la musica di Google nel mio caso. Quindi, se l'utente tenta ottenere pedina in un primo momento, utilizzando il metodo seguente:L'account Google ottiene il 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; 
    } 

qui ottengo s1 == null e la notifica push:

notification

Quando rubinetto utenti in materia di notifica, viene visualizzata la prossima finestra di dialogo:

dialog

Quando l'utente clicca su "OK", tutte le successive iterazioni ottenere Token get succe ss.

Domanda: Come aggirare questa conferma o mostrare solo la finestra di dialogo, senza fare clic sulla notifica?

risposta

2

Non è una risposta diretta alla tua domanda, ma puoi utilizzare Google Play Services.

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

Devi solo specificare l'ambito oauth2 di cui hai bisogno. Ad esempio, per Google+ è necessario "https://www.googleapis.com/auth/plus.login" invece di ciò che pubblico nello snippet per Gmail. È inoltre possibile specificare più ambiti in una richiesta di token. La richiesta di autorizzazione viene visualizzata immediatamente.

Potete leggere tutto su di esso qui: Authorizing with Google for REST APIs, Login scopes

+0

non riesco a trovare spazio per Google Play Music sservice – smail2133

+0

Beh, per avere una possibilità di un gettone è necessario prima di avere un'idea che API cerchi un ambito per. Tra le API disponibili non c'è uno specifico di Google Play Music. Puoi controllare tutti qui: [OAuth 2.0 Playground] (https://developers.google.com/oauthplayground/) e devi assicurarti che l'API sia abilitata nella [Google Developers Console] (https: // console .developers.google.com/progetto). Verifica quale API ti offre i privilegi di cui hai bisogno. Ad esempio, quello di Google+ potrebbe includere questi. – Chris

-1

risolto. Hai bisogno di utilizzare questo metodo:

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(); 
Problemi correlati