2016-03-11 3 views
5

ホストドメインアカウントであるsubユーザーIDがhttps://developers.google.com/identity/sign-in/android/backend-authで返された場合、Googleアカウントは常にUserService.getCurrentUser().getUserId()の応答に一致します。Android用Google Sign-InでHostedドメインアカウントのUserService.getCurrentUser()と異なる「サブ」ユーザーIDが返されるのはなぜですか?

ただし、ホストドメインアカウントの場合、sub識別子はUserService.getCurrentUser().getUserId()の応答と一致しません。ユーザーがAndroid IDトークン用にGoogle Sign-Inを使用してログインするか、サーバー側のUserServiceブラウザのログインを使用してログインするかにかかわらず、ホストされたドメインアカウントの共通のユーザーIDを取得するにはどうすればよいですか。

+0

idToken.getPayload()。getEmail()は常にUserService.getCurrentUser()と一致する必要がありますので、ホステッドドメインアカウントの共通IDとして電子メールアドレスを使用することが1つのフォールバックです。 ()。 – Adam

+0

しかし、Googleアカウントのメールアドレスは変更される可能性があります。そのため、ユーザーを一意に識別する方法はあまり信頼できません。 –

答えて

0

理由:Google App EngineがGoogleの独自の認証/ユーザーアカウントシステムを直接使用するのに対して、Identity Kitは複数のOAuthプロバイダと統合された個別のプロジェクトであるという事実の不一致があると確信しています。言い換えれば、彼らはある時点でゆるやかに統合された別々のプロジェクトです。

が問題に対処するために、私の推薦は、App Engine上で Googleのネイティブ認証APIを使用してだけではなく、もちろんのAndroid/iOSのアイデンティティオブジェクトと同じデータとスキーマを使用します。これは、 Identity Toolkit Webを使用しない にあります。他のWebアプリケーションと同じようにIdentity Toolkitを使用するだけで、非常にシンプルで、GAEの外でポータブルです。

App Engineの作成時にIdentity Toolkitが存在していた場合、おそらく自動的に統合され、すべて正常に機能します。しかし、私はあなたが本当にそれらを混ぜ合わせて合わせることができないことを発見しましたあなたはそれを選び、それに固執する。

関連する問題