我尝试在我的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
打开的帐户,我应该配置什么来添加它们?或者这是正确的行为,我应该保持原样吗?
1条答案
按热度按时间2skhul331#
因为
chrome.identity.launchWebAuthFlow
不与浏览器共享cookie,所以您在第一次登录时不会拥有该帐户。因此,如果您需要,您必须自己处理登录流程(打开弹出窗口)。
但是,Google OAuth2不允许
chrome-extension
模式用于重定向URI,您需要在中间有一个服务器(具有https
模式)来将令牌转发到您的客户端(扩展)。