2016-01-17 16 views
5

Sto utilizzando Google Sign-In sulla mia app iOS. Tutto funzionava bene fino a poco tempo fa, quando ho notato che l'app non ottiene più il nome dell'utente, viene restituito solo l'indirizzo email.L'endpoint di accesso Google non restituisce più il nome dell'utente

io sono sempre un segno attraverso l'app che ti mando al mio assistente, che ha usato per recuperare tutte le informazioni inviando una richiesta a questo endpoint:

https://www.googleapis.com/oauth2/v1/tokeninfo?id_token=MYTOKEN 

sto ottenendo questo tipo di risposta ora:

{ 

    "issuer": "https://accounts.google.com", 
    "issued_to": "o37l8g.apps.googleusercontent.com", 
    "audience": "o37l8g.apps.googleusercontent.com", 
    "user_id": "113504", 
    "expires_in": ​814, 
    "issued_at": ​1452991611, 
    "email": "[email protected]", 
    "email_verified": true 

} 

ho cercato di usare altri endpoint, come https://www.googleapis.com/oauth2/v1/tokeninfo?access_token= e https://www.googleapis.com/oauth2/v1/userinfo?access_token=, ma nessuno di loro ha funzionato.

Ho provato anche con il parco giochi ma non riesco a trovare quale endpoint utilizzare, il mio ambito è ben definito e vedo nell'app iOS che sono richieste tutte le autorizzazioni, ma in qualche modo non restituisce ancora il nome dell'utente. . Qualche idea?

+0

è possibile verificare che il tuo account ha un nome set (cosa succede se si prova con altri account?). Quando vai su https://developers.google.com/oauthplayground/ e richiedi l'ambito del profilo, quindi scambia il codice per i token, vedi un nome quando aggiungi il token ID a https://www.googleapis.com/oauth2/v1/tokeninfo? id_token = –

+0

@StevenSoneff yes il mio account ha un nome impostato e il problema riguarda tutto l'account. E no, non vedo neanche il nome. –

+0

Sì, non sembra essere un problema con l'account. Quale versione dell'SDK di accesso di Google su iOS stai utilizzando? Puoi aggiungere uno snippet alla domanda che mostra come è configurato? Il tuo link è su G + SDK precedenti, hai provato a utilizzare l'ultimo? https://developers.google.com/identity/sign-in/ios/ –

risposta

3

si dovrebbe usare il access_token al posto del id_token, in modo da essere ancora in grado di interrogare l'endpoint tokeninfo per il proprio token utilizzando:
https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=

Ma ora è possibile interrogare anche altri endpoint per l'accesso ad altre informazioni, come il nome:
https://www.googleapis.com/plus/v1/people/me?access_token=

controllare come si utilizza il Google SignIn iOS SDK e assicurarsi che si stanno ottenendo fine di inviare al server l'access_token al posto del id_token.

esempio a Swift:

func signIn(signIn: GIDSignIn!, didSignInForUser user: GIDGoogleUser!, withError error: NSError!) { 
    let token = user.authentication.accessToken // YES 
    let token = user.authentication.idToken // Maybe NO 
... 
+0

Funziona, grazie! –

+0

Questo ha funzionato per me. Stranamente il idToken funziona un po 'di tempo ma non altri che hanno reso molto difficile il debug! – Brendan

2

Secondo OpenID Connect documentation

a scopo di debug, è possibile utilizzare endpoint tokeninfo di Google. Supponiamo che il valore del token ID sia XYZ123. Quindi si deniterebbe l'URI https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=XYZ123. Se il token è valido, la risposta sarà il suo modulo JSON decodificato.

Di conseguenza, si dovrebbe usare https://www.googleapis.com/oauth2/v3/tokeninfo?id_token= invece

Ecco il risultato del campione:

{ 
    "iss": "https://accounts.google.com", 
    "at_hash": "q5xc...", 
    "aud": "6043....apps.googleusercontent.com", 
    "sub": "10983809...", 
    "email_verified": "true", 
    "azp": "6043....apps.googleusercontent.com", 
    "email": "[email protected]", 
    "iat": "1453101827", 
    "exp": "1453105427", 
    "name": "BNK", 
    "picture": "https://lh6.googleusercontent.com/-XP8Sq0RiUvg/AAAAAAAAAAI/.../photo123.jpg", 
    "given_name": "...", 
    "family_name": "...", 
    "locale": "en", 
    "alg": "RS256", 
    "kid": "411f5ba60aa6....ec50f90e8" 
} 
Problemi correlati