我正在开发一个客户端-服务器应用程序,并希望为用户提供单点登录,让他们可以使用 Google 登录。我打算通过使用 AccountManager 在手机上获取访问令牌,然后将此令牌发送到服务器以验证令牌并登录用户来做到这一点。
当我在 AccountManager 中调用 getAuthToken 方法时,会显示一个对话框,用户必须允许这样做,但是 Android 上的 Chrome 允许您登录并将浏览器数据与您的 Google 帐户同步,而不会显示此对话框。因此,Chrome 似乎能够在不向用户显示任何对话框的情况下获取访问令牌,如果我可以对我的应用程序执行相同操作,那就太好了。
在查看 Android 的源代码和getAuthToken 的实现时, 如果应用程序是预安装的应用程序或应用程序 UID 与身份验证器的 UID(Google 帐户)相同,则似乎自动授予访问权限。
我的应用程序和 Chrome 都没有预装,因此在这两种情况下检查都是错误的。我的应用程序当然不能与 Google 帐户身份验证器共享 UID,我假设 Chrome 有可能与身份验证器共享 UID,因为 Google 创建了它们。如果是这种情况,那么它将解释为什么 Chrome 不显示任何对话框。
在请求我可能丢失的访问令牌时,是否有其他方式不向用户显示此对话框?