从扩展程序中获取OAuth令牌的不同方法是什么?

时间:2015-11-27 10:03:23

标签: google-chrome google-chrome-extension google-chrome-app

我只知道两种获取Google OAuth令牌的方法:

1。 chrome.identity.getAuthToken():获取与Chrome帐户关联的令牌。重新启动chrome后,我可以在不记录的情况下调用getAuthToken()方法。效果很好。但是对于非谷歌帐户不起作用。

2. chrome.identity.launchWebAuthFlow():适用于Google和非Google帐户。但重新启动chrome后,如果调用launchWebAuthFlow(),则会再次请求登录。这很烦人。

我想要实现的是结合两者的功能:

从Google和非Google帐户中提取OAuth令牌。重新启动chrome后,我可以在不登录的情况下再次获取令牌。

如果有人知道如何使用chrome.identity.launchWebAuthFlow()来实现相同或任何其他方法吗?

1 个答案:

答案 0 :(得分:0)

OAuth提供程序将返回某种可重用的访问令牌,可以在后续登录时重复使用。通常这些都是非常长寿的。例如,dropbox在responseUrl中返回一个访问令牌(在来自Web流的回调中),匹配正则表达式模式/access_token=([^&]+)/

您可以将此令牌存储在local storage中,并在后续尝试时访问它,而无需再次通过身份验证流程。

auth令牌永远不会永远存在(或者他们可能被手动取消授权),因此您必须注意401响应代码,如果发生这种情况,请再次进行Web身份验证。

逻辑最终非常复杂,例如:

  1. 获取存储的令牌
  2. 如果没有存储的令牌,则启动Web流并将身份验证令牌保存在本地存储中
  3. 使用存储的令牌
  4. 尝试一些操作
  5. 如果是401,则重做auth flow并重试操作