使用 Identity.launchWebAuthFlow 打开的登录页面不显示我登录的帐户

t.k*_*sin 7 javascript identity google-api google-chrome-extension oauth-2.0

我正在尝试在我的 chrome 扩展中添加用户登录。我使用自己的服务器,它将用户重定向到https://accounts.google.com/signin/oauth/oauthchooseaccount*. 一般来说,它有效。但身份验证页面上没有建议的帐户(下面的屏幕截图)。

在扩展程序的后台脚本中,我用来launchWebAuthFlow接收令牌:

chrome.identity.launchWebAuthFlow({
    interactive: true,
    url: 'http://localdomain.io/auth/login?source=extension',
}, redirectUri => {...})
Run Code Online (Sandbox Code Playgroud)

用户重定向到https://accounts.google.com/signin/oauth/oauthchooseaccount页面以选择帐户。

当带有谷歌身份验证的窗口打开时,要记录的帐户列表是空的。所以我需要手动输入电子邮件和密码。 实际 - 空帐户列表

但是,当我http://localdomain.io/auth/login?source=extension直接打开(在浏览器中)时,我看到许多可以登录的帐户(我不时使用这些帐户登录不同的网站),只需单击没有密码的帐户即可。 预期(正如我在浏览器中打开链接时收到的那样)

并且(应该注意)当我登录我的分机(使用电子邮件+密码)时,我可以在注销后看到此电子邮件。但每次都必须输入密码。浏览器重新启动后,此列表将被删除。

问题:

为什么在通过方式打开的身份验证页面上没有帐户launchWebAuthFlow,我应该配置什么来添加它们?或者这是正确的行为,我应该保持原样吗?

Duc*_*lan 0

由于chrome.identity.launchWebAuthFlow不与浏览器共享cookie,因此您不会在第一次时拥有登录帐户。

因此,如果您需要,您必须自己处理登录流程(打开弹出窗口)。

但是,Google OAuth2 不允许chrome-extension重定向 URI 的模式,您需要https在中间有一个服务器(带有模式)来将令牌转发到您的客户端(扩展)。