我只知道两种获取Google OAuth令牌的方法:
1。 chrome.identity.getAuthToken():获取与Chrome帐户关联的令牌。重新启动chrome后,我可以在不记录的情况下调用getAuthToken()
方法。效果很好。但是对于非谷歌帐户不起作用。
2. chrome.identity.launchWebAuthFlow():适用于Google和非Google帐户。但重新启动chrome后,如果调用launchWebAuthFlow()
,则会再次请求登录。这很烦人。
我想要实现的是结合两者的功能:
从Google和非Google帐户中提取OAuth令牌。重新启动chrome后,我可以在不登录的情况下再次获取令牌。
如果有人知道如何使用chrome.identity.launchWebAuthFlow()
来实现相同或任何其他方法吗?
答案 0 :(得分:0)
OAuth提供程序将返回某种可重用的访问令牌,可以在后续登录时重复使用。通常这些都是非常长寿的。例如,dropbox在responseUrl中返回一个访问令牌(在来自Web流的回调中),匹配正则表达式模式/access_token=([^&]+)/
。
您可以将此令牌存储在local storage中,并在后续尝试时访问它,而无需再次通过身份验证流程。
auth令牌永远不会永远存在(或者他们可能被手动取消授权),因此您必须注意401响应代码,如果发生这种情况,请再次进行Web身份验证。
逻辑最终非常复杂,例如: