2012-03-23 11 views
8

Sto scrivendo un'applicazione Android, che utilizza AccountManager per ottenere il token. Da un'app per Android sono in grado di interagire con Google Picasa: funziona perfettamente.convalida authToken di Android su server di terze parti

Quello che mi piacerebbe ottenere è il seguente: inviare del testo + authToken al mio server di terze parti, quindi controllare se il token è corretto prima di salvare il testo. Ora la domanda è: è possibile determinare se l'authToken di un particolare token è corretto solo sul token stesso (e forse sull'indirizzo email).

ho già programmato la parte server, che accetta il token (invio dall'applicazione Android), quindi emette una richiesta a un indirizzo URL:

https://accounts.google.com/o/oauth2/tokeninfo?access_token=%token_here% 

Quello che torno è la seguente JSON:

Ma il collegamento qui http://oauthssodemo.appspot.com/step/4 indica che se un token è corretto, dovrei ricevere una risposta JSON diversa. Puoi dirmi cosa sto facendo male: credo che il modo per verificare la validità del token in realtà non sia così semplice, ma dovrei piuttosto implementare l'intero openid o qualcosa del genere. Anche se questo è il caso, come posso verificare se il token inviato dall'app per Android è corretto, così posso salvare la parte "testo" del messaggio.

Grazie.

+0

Eventuali anticipi su questo? Anche io sono molto interessato. – Urizev

+0

+1 solo per la formulazione precisa della domanda. È il 2015 e ancora difficile trovare la documentazione corretta/facile da trovare per questo. Frustrante. –

risposta

2

La soluzione è la seguente. È possibile verificare il token tramite questo URL:

https://accounts.google.com/o/oauth2/tokeninfo?access_token=%token_here% 

Ma nel mio caso stavo cercando di validare "il codice di autorizzazione" e non "token di accesso", come potete vedere qui: https://code.google.com/oauthplayground/

Se sta utilizzando Android e OAuth non utilizzare

lh2 

ma piuttosto utilizzare il seguente come nome del servizio:

http://picasaweb.google.com/data/ 

Quindi si dovrebbe chiamare getAuthToken come segue

getAuthToken(account, "http://picasaweb.google.com/data/" , true, null, null); 

Quindi è possibile convalidare il token ricevuto da questa chiamata sul URI postato sopra.

1

leggere questo https://developers.google.com/accounts/docs/OAuth2WebServer

Dopo che il server Web riceve il codice di autorizzazione, si può scambiare il codice di autorizzazione per un token di accesso e di un token di aggiornamento. Questa richiesta è un messaggio HTTPs, e comprende i seguenti parametri:

+0

Ciao, sono solo i campi in cui ricevo una risposta, che funzionava sempre e non faceva parte della domanda. La domanda era come convalidare il token una volta che l'ho già preso. E il problema è stato risolto come puoi vedere dal verde OK. – eleanor

7

smettere di usare AccountManager e iniziare a utilizzare Google Play classe GoogleAuthUtil di servizio, allora diventa facile.Vedere http://android-developers.blogspot.ca/2013/01/verifying-back-end-calls-from-android.html

+0

Da un paio di settimane cerco sempre di verificare come garantire che le richieste al mio server (che serve i contenuti per la mia app per Android) provengano dalla mia app per Android e sembra che questa sia una soluzione perfetta. Grazie per aver postato questo!! –

+0

Hey Tim, sto lavorando a quell'esempio a cui ti sei collegato e che è molto semplice. Ho solo una domanda; dice di usare 'GoogleAuthUtil.getToken()' per ottenere un token ID, ma quale valore devo passare per 'accountName'? So che posso recuperare gli account Google autenticati per il dispositivo, ma se c'è più di uno come faccio a sapere quale usare? Scusa se la risposta è ovvia, ma non riesco a capire questa parte. –

+2

Probabilmente troppo tardi, ma usa la classe AccountPicker per consentire all'utente di scegliere un account e questo ti darà l'accountNome –

1

Mi sono imbattuto in passaporto-google-token strategia di passaporto che esegue perfettamente l'attività.

https://www.npmjs.com/package/passport-google-token

Maggiori dettagli sono presenti nel link qui sopra.

+0

I collegamenti tendono a rompersi nel tempo. Si prega di fornire un breve riassunto di ciò che è nel link. Vedi https://stackoverflow.com/help/referencing. –

Problemi correlati