2016-03-11 22 views
5

Per account Google che sono NON account di dominio ospitato, l'identificativo utente sub restituito da https://developers.google.com/identity/sign-in/android/backend-auth corrisponde sempre alla risposta da UserService.getCurrentUser().getUserId() come previsto.Perché Google Sign-In per Android restituisce un identificatore utente "secondario" diverso da UserService.getCurrentUser() per gli account di dominio ospitato?

Tuttavia, per gli account di dominio ospitato, l'identificatore sub non corrisponde alla risposta da UserService.getCurrentUser().getUserId(). Come possiamo avere un identificatore utente comune per gli account di domini ospitati, indipendentemente dal fatto che l'utente esegua l'accesso con l'accesso a Google per il token ID Android o tramite l'accesso al browser UserService lato server?

+0

Non posso commentare il motivo della loro differenza, tuttavia un ripiego è utilizzare l'indirizzo di posta elettronica come ID comune per gli account di dominio ospitato come idToken.getPayload(). GetEmail() deve sempre corrispondere a UserService.getCurrentUser(). GetEmail(). – Adam

+0

Gli indirizzi email per gli account Google, tuttavia, possono essere modificati, quindi non è un metodo molto affidabile per identificare gli utenti in modo univoco. –

risposta

0

Per quanto riguarda il motivo: sono abbastanza sicuro che la discrepanza sia un artefatto del fatto che Google App Engine utilizza direttamente il sistema di autenticazione/account utente di Google, mentre Identity Kit è un progetto separato che si integra con più provider OAuth. In altre parole, sono progetti separati che a un certo punto sono stati solo vagamente integrati.

per affrontare il problema, la mia raccomandazione è di Non utilizzare API native di autenticazione di Google su App Engine e invece basta usare Identity Toolkit Web, che sarà naturalmente utilizzare gli stessi dati e lo schema degli oggetti Android/iOS identità. L'utilizzo di Identity Toolkit come qualsiasi altra applicazione Web è piuttosto semplice ed è portatile al di fuori di GAE.

Se Identity Toolkit era presente quando è stato creato App Engine, forse sarebbero stati integrati automaticamente e tutto funzionerebbe. Ma ho scoperto che non puoi davvero combinarli; ne scegli uno e lo mantieni