2013-03-26 19 views
6

Uso il login di Google tramite account manager nella mia app Android. Posso ottenere accesstoken che invio a server e server in grado di creare/accedere a un nuovo utente. Accesstoken è valido solo 3600 secondi. Il problema è che il server non può aggiornare le informazioni dell'utente dopo che questo tempo è scaduto. L'app Web richiede periodicamente la verifica delle informazioni dell'utente.token di aggiornamento accountmanager (accesso non in linea)

Come posso ottenere il token di autenticazione e aggiornare il token dal gestore account Android in modo che il server possa utilizzare il token di aggiornamento per aggiornare periodicamente i dati? Non voglio utilizzare l'accesso tramite webview nell'app per Android.

Grazie

risposta

3

Attualmente non è possibile, che sono sicuro che non è la risposta che stai sperando in, mi dispiace! Se si dispone di un accesso Web, è possibile utilizzare il flusso ibrido per ottenere un token di aggiornamento sul server (vedere https://developers.google.com/+/web/signin/server-side-flow), ma non è possibile recuperare un codice come parte dei flussi Android o iOS.

Se questo è qualcosa che è necessario per l'utilizzo del caso, è possibile presentare una richiesta di funzionalità qui: https://code.google.com/p/google-plus-platform/issues - stiamo osservando attivamente il numero di stelle su questo per misurare la domanda di varie caratteristiche.

+0

Ho appena sentito che –

0

processo di Google di autorizzazione tramite account manager:

Email ID può essere ottenuto da

AccountManager accountManager = AccountManager.get(getApplicationContext()); 
Account[] accounts = accountManager.getAccountsByType("com.google"); 
String emailID = accounts[0].name; // you can retrieve using google account chooser way also 

Queste linee dovrebbero essere eseguiti in segno separato (non in thread UI).

String scope = "oauth2:https://www.googleapis.com/auth/userinfo.profile https://gdata.youtube.com"; 
String accessToken = GoogleAuthUtil.getToken(mContext, emailID, scope); 

salvare l'accessToken e utilizzarlo per l'accesso api.

Dopo un'ora (cioè 3600 secondi), è necessario aggiornare il token di accesso. Ma ora Google non supporta l'accesso dopo un'ora. Dobbiamo riavviare l'applicazione e utilizzare le seguenti linee per ottenere il token di accesso.

String scope = "oauth2:https://www.googleapis.com/auth/userinfo.profile https://gdata.youtube.com"; 
String accessToken = GoogleAuthUtil.getToken(mContext, emailID, scope); 

Questo thread in background sarà sempre eseguito in background in ciclo while

+1

Ad ogni modo, non utilizzare Thread.sleep() su un thread in background su Android. La discussione è una risorsa costosa. Pianifica il tuo codice su un gestore o servizio di background attivato da AlarmManager. – Renascienza

Problemi correlati