当多个帐户处于活动状态(在移动设备上)时,如何通过Google身份验证提示用户选择帐户?

时间:2017-05-20 15:52:08

标签: google-app-engine google-authentication

我有一个AppEngine(Java)应用程序,它使用本机AppEngine身份验证机制(请参阅:https://cloud.google.com/appengine/docs/standard/java/users/)。它会通过createLoginURLcreateLogoutURL方法生成登录和注销网址。

在桌面上,一切都运行得很好。激活多个帐户的用户将被提示选择一个在登录时使用的帐户,并且在退出时她将退出所有帐户。

然而,在移动设备上,它不会以这种方式工作。具有多个帐户的用户将在登录时自动登录到第一个帐户(无论是什么),并且在退出时将提示她选择帐户。我不知道为什么帐户选择器作为退出流程的一部分显示,我不知道选择一个帐户实际上做了什么,因为最终结果看起来是相同的,无论选择的帐户:AppEngine认为用户已退出。

过去,帐户选择器曾经在登录时显示(它是一个单选按钮帐户选择器,不如注销那个漂亮,但仍然有功能)。现在,我无法出现一个。我已通过https://myaccount.google.com确认多个帐户已主动登录。

此工作流程的简单测试如下:

  1. 通过createLoginURLcreateLogoutURL生成登录和退出网址。
  2. 移动上:
    1. 使用一个Google帐户登录。
    2. 使用其他Google帐户登录。
    3. 确认两者均通过https://myaccount.google.com登录。
    4. 导航到登录URL。
      1. 预期行为:显示帐户选择器;在选择时,用户被重定向到"继续" URL。
      2. 实际行为:没有用户操作发生,用户被重定向到"继续" URL。
    5. 导航到退出网址。
      1. 预期行为:没有用户操作发生,用户被重定向到"继续" URL。
      2. 实际行为:显示帐户选择器;在选择时,用户被重定向到"继续" URL。
  3. 供参考,以下是createLoginURLcreateLogoutURL方法生成的登录和注销网址的值(显然" EXAMPLE-APP"将是实际的AppEngine ID我的申请表):

    • createLoginUrl("/ui/signin.html")https://www.google.com/accounts/ServiceLogin?service=ah&passive=true&continue=https://appengine.google.com/_ah/conflogin%3Fcontinue%3Dhttps://EXAMPLE-APP.appspot.com/ui/signin.html&ltmpl=gm
    • createLogoutUrl("/ui/signout.html")https://EXAMPLE-APP.appspot.com/_ah/logout?continue=https://www.google.com/accounts/Logout%3Fcontinue%3Dhttps://appengine.google.com/_ah/logout%253Fcontinue%253Dhttps://EXAMPLE-APP.appspot.com/ui/signout.html%26service%3Dah

    此外,我目前正在使用运行Chrome的Android手机(一个Galaxy S6和一个像素;我目前没有其他设备可供测试)。

    我的问题:如何让Google在移动设备上显示Google AppEngine(for Java)中登录操作的帐号选择器?

    编辑:以下是演示此问题的示例AppEngine项目。

0 个答案:

没有答案