oauth2.0 使用identity.launchWebAuthFlow打开的登录页面未显示我登录的帐户

k4ymrczo  于 2022-11-21  发布在  其他
关注(0)|答案(1)|浏览(165)

我尝试在我的chrome扩展中添加用户登录。我使用自己的服务器,它将用户重定向到https://accounts.google.com/signin/oauth/oauthchooseaccount*。一般来说,它工作正常。但是在auth页面上没有建议的帐户(下面的截图)。
在扩展的后台脚本中,我使用launchWebAuthFlow来接收令牌:

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

用户重定向到https://accounts.google.com/signin/oauth/oauthchooseaccount页面以选择帐户。
当谷歌认证窗口打开时,要登录的帐户列表是空的。所以我需要手动输入电子邮件和密码。Actual - empty account list
但是当我直接打开http://localdomain.io/auth/login?source=extension(在浏览器中)时,我看到了一些我可以登录的帐户(那些我不时使用来登录不同的网站),只需点击没有密码的帐户。Expected (as I receive when open link in browser)
而且(需要注意的是)当我用我的分机(用电子邮件+密码)登录时,我可以在注销后看到这封电子邮件。但是每次都必须输入密码。并且在浏览器重新启动后,这个列表会被删除。
问题:
为什么在auth页面上没有通过launchWebAuthFlow打开的帐户,我应该配置什么来添加它们?或者这是正确的行为,我应该保持原样吗?

2skhul33

2skhul331#

因为chrome.identity.launchWebAuthFlow不与浏览器共享cookie,所以您在第一次登录时不会拥有该帐户。
因此,如果您需要,您必须自己处理登录流程(打开弹出窗口)。
但是,Google OAuth2不允许chrome-extension模式用于重定向URI,您需要在中间有一个服务器(具有https模式)来将令牌转发到您的客户端(扩展)。

相关问题