google-chrome - 从扩展获取 OAuth token 的不同方法?

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

我只知道两种获取 google OAuth token 的方法:

1. chrome.identity.getAuthToken() :获取与 chrome 帐户关联的 token 。重新启动 chrome 后,我可以调用 getAuthToken() 方法而不进行日志记录。效果很好。但不适用于非 Google 帐户。

2. chrome.identity.launchWebAuthFlow() :适用于 Google 和非 Google 帐户。但是重启chrome后,如果调用launchWebAuthFlow(),它会要求再次登录。真烦人。

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

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

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

最佳答案

OAuth 提供商将返回某种可重用的访问 token ,可以在后续登录时重用。通常这些生命周期很长。例如,dropbox 在responseUrl 中返回一个访问 token (在来自Web 流的回调中),与正则表达式模式/access_token=([^&]+)/ 匹配。

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

身份验证 token 并不总是永远有效(或者可以手动取消授权),因此您必须留意 401 响应代码,如果发生这种情况,请再次执行网络身份验证流程。

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

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

关于google-chrome - 从扩展获取 OAuth token 的不同方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33954876/

相关文章:

docker - 我可以使用dokku predeploy在docker容器中安装google chrome吗?

css - Google 字体 (Lato) 无法在 Google Chrome 上呈现

javascript - 不能依赖 chrome.tabs.move 中的索引

javascript - Chrome 应用程序/webview 中的 FB.login

sockets - 在 Chrome 扩展程序中作为 TCP 服务器监听的正确方法

javascript - Chrome 浏览器操作点击不起作用

google-chrome - Google 'Omaha'(他们的 Chrome 自动更新引擎)的体验如何?

javascript - 如何识别由于 Chrome 扩展而导致的 DOM html 代码更改

javascript - 在 Chrome 扩展程序中自动下载并上传文件

html - Chrome 应用中的 indexedDB