对于 NOT 托管域帐户的 Google 帐户,sub
用户标识符由 https://developers.google.com/identity/sign-in/android/backend-auth 返回始终按预期匹配来自 UserService.getCurrentUser().getUserId()
的响应。
但是对于托管域帐户,sub
标识符与来自 UserService.getCurrentUser().getUserId()
的响应不匹配。无论用户是使用 Google Sign-In for Android Id Token 登录还是通过服务器端 UserService 浏览器登录,我们如何才能拥有托管域帐户的通用用户标识符?
最佳答案
至于原因:我很确定这种差异是 Google App Engine 直接使用 Google 自己的身份验证/用户帐户系统这一事实造成的,而 Identity Kit 是一个与多个 OAuth 提供商集成的独立项目。换句话说,它们是在某些时候只是松散集成的独立项目。
为了解决这个问题,我的建议是不在 App Engine 上使用 Google 的原生身份验证 API,而只使用 Identity Toolkit Web ,它当然会使用与 Android/iOS Identity 对象相同的数据和模式。就像使用任何其他 Web 应用程序一样使用 Identity Toolkit 非常简单,而且它可以在 GAE 之外移植。
如果创建 App Engine 时 Identity Toolkit 就在身边,也许它们会自动集成并且一切正常。但我发现你不能真正混合搭配它们;你选择一个并坚持下去。
关于android - 为什么 Google Sign-In for Android 会返回一个 "sub"用户标识符,这与托管域帐户的 UserService.getCurrentUser() 不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35948449/