2013-08-21 15 views
12

Provo a utilizzare Google oauth per autenticare gli utenti sulla mia app Android. Quindi desidero inviarlo al mio server delle app in modo che possa connettersi in qualsiasi momento con il calendario di Google.ottenere Google token di autorizzazione oauth da Android- restituire con invalid_scope/Errore sconosciuto

Ho cercato di usare GoogleAuthUtil.getToken(getApplicationContext(), mAccountName, mScope);

A seguito di questo articolo: https://developers.google.com/accounts/docs/CrossClientAuth

quando lo uso con portata mScope = "oauth2:https://www.googleapis.com/auth/calendar https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile"; ricevo un gettone, che è valido per un'ora

Ma quando Provo ad ottenere un codice di autorizzazione (così posso ottenere un token di aggiornamento che è valido per più tempo, usando mScope2 ="oauth2:server:client_id:{CLIENT_ID}.apps.googleusercontent.com"+ ":api_scope:https://www.googleapis.com/auth/calendar https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile";

Ricevo eccezioni "invalid_scope" o "Unknown".

Cosa sto sbagliando?

MODIFICA: OK, dopo aver creato una nuova app sulla console API di google e aggiunto plus.login all'ambito ottengo un codice, ma per qualche motivo il mio server non può risolvere questo token. Quando si cerca di risolvere il server viene visualizzato un errore sull'URL di reindirizzamento. BTW, quando faccio il flusso web con gli stessi parametri funziona.

risposta

11

OK, ho trovato la soluzione, mi aspettavo che Google avesse una documentazione molto migliore su come lavorare con Google Oauth e Android. Un paio di cose che dovete sapere per lavorare con Android e non in linea di token

  1. Quando si crea google ID client Non creare un'applicazione di servizio prima di creare un'applicazione web

  2. necessario includere nella vostra https://www.googleapis.com/auth/plus.login scope

  3. Il più strano, per risolvere il codice di autorizzazione una tantum sul mio server, ho dovuto utilizzare l'URL di reindirizzamento dai dettagli dell'ID client Android (che non sembra nemmeno un URL) e non dal client Web dettagli sulla console dell'API di Google.

+0

non riesco a farlo. Posso vedere come è fatto – prashantwosti

+2

Avete il vostro codice postato ovunque per caso (Github ecc.)? Sto ricevendo l'eccezione Sconosciuta e mi sta facendo assolutamente impazzire Non so più cosa provare ... –

+1

Grazie mille. Il terzo passo è in realtà importante. Sono rimasto bloccato per tutto il giorno a pensare a cosa c'era di sbagliato nella mia richiesta e Google dovrebbe davvero lavorare di più per fornire una buona documentazione. –

Problemi correlati