2015-02-23 43 views
8

我有一个Chrome扩展程序,它要求用户使用chrome.identity.getAuthToken路由登录。这工作正常,但是当您登录时,您只能使用您在Chrome中拥有帐户的用户。使用Chrome用户以外的Google用户登录Chrome扩展程序

客户希望能够使用不同的Google帐户登录;而不是使用Chrome登录的帐户[email protected],他们希望能够使用[email protected]登录,该帐户也是有效的Google帐户。

我可以使用一个帐户登录Chrome,使用第二个帐户登录Gmail,但我无法选择在扩展程序中进行选择。

这可能吗?

回答

12

不是使用chrome.identity.getAuthToken来验证用户,而只是自己实现OAuth部分。

您可以使用库来帮助您,但上次尝试使用最有用的库(Google API客户端)不适用于Chrome扩展。

查看Google OpenID Connect文档以获取更多信息。最后,您只需将用户重定向到OAuth网址,使用您的扩展程序获取Google的答案(授权码),然后将授权码转换为访问令牌(这是一种简单的POST调用)。

由于Chrome扩展程序无法重定向到Web服务器,因此可以使用installed app重定向URI:urn:ietf:wg:oauth:2.0:oob。有了这个谷歌将显示一个包含授权码的页面。

只需使用您的扩展在本页中注入一些javascript代码即可获取授权码,关闭HTML页面,执行POST调用以获取用户的电子邮件。

+0

很好的答案。这非常接近我们最终如何做到这一点。我希望我们知道已安装的应用重定向URI。我们采用的路线是直接进入OAuth审批页面,该页面指向我们的一台服务器上的页面,通知用户成功或失败的原因。有点迂回,但它的工作和客户很高兴。 – boodle 2015-03-20 07:51:15

+1

如果您只需要用户的电子邮件/名称,此技术就可以工作。如果你需要连接chrome webstore的许可api,那么你必须在开发者控制台中创建一个“chrome应用程序”,它只能和chrome.identity.getAuthToken一起工作。 – 2016-02-19 13:29:25

+1

你能解释一下这个部分:“只需使用你的扩展来注入一些在这个页面的JavaScript代码中获取授权码,关闭HTML页面,执行POST调用以获取用户的电子邮件。“? 我不太清楚在用户完成流程后如何挂接到授权页面。 – Cory 2017-05-30 07:05:52

相关问题