android - 为什么 Google Sign-In for Android 会返回一个 "sub"用户标识符,这与托管域帐户的 UserService.getCurrentUser() 不同?

标签 android google-app-engine google-authentication

对于 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/

相关文章:

python - 发送压缩后的表单数据

google-app-engine - 连接 Google App Engine 和 Google Compute Engine

javascript - (仍未解决)授权 Web App 访问客户端和服务器端的用户 Google Calendar? (使用 Firebase 和 Google API)

google-api - 在弹出窗口中打开 Google SignIn 用户身份验证,需要使用 OAuth 2.0 在同一个 Tab 本身中打开

oauth-2.0 - 使用代码获取刷新 token 时出现内​​部故障?

android - ViewPager fragment 崩溃中的 onActivityResult

android - 如何根据所选的构建变体将后缀动态更改为插件版本?

android - 如何创建多维数组?

java - 使用 Objectify 4 对象化 GenericDao<T>

android - 拍照前调用 onActivityResult