【问题标题】:Chrome Extension example of oAuth 2.0oAuth 2.0 的 Chrome 扩展示例
【发布时间】:2021-11-15 22:50:38
【问题描述】:

chrome 开发者扩展教程使用过时的 oAuth 1,将于 2015 年 4 月淘汰:https://developer.chrome.com/extensions/tut_oauth

是否有在 chrome 扩展中实现 oAuth 2.0 的教程?

【问题讨论】:

  • 大量,严重的是,互联网比谷歌的第一个结果要大。知识渊博的人可以指出通过查询无法找到的黄金结果。
  • 我很高兴你问了这个问题,赞成。此外,这是一个深刻的句子:D - “大量,严重的是,互联网比谷歌的第一个结果要大。”
  • @cDima 在搜索有关从扩展程序进行 oauth2 调用的信息时,我回到了这个页面(来自谷歌结果)。我完全忘记了我说过我所说的话,1. 我觉得自己像个白痴,2. 欠你一个道歉。我不想找借口,所以我只想说清楚你不值得我评论,我很抱歉。
  • @bulk 都是好朋友 ;)

标签: google-chrome-extension oauth-2.0


【解决方案1】:

我写了一个如何integrate any OAuth2 system into a Chrome extension 的示例。我的扩展使用 AngularJS 作为框架,但如果你选择遵循相同的模式,你可以使用普通的旧 JavaScript 或其他框架来实现。

诀窍是使用chrome.identity.launchWebAuthFlow() 方法。

我的示例实际上配置为使用 Google,但这仅仅是因为它很方便。您可以使用自己的 OAuth2 提供程序,就像我在我的公司一样。重要的区别是launchWebAuthFlow() 不需要像chrome.identity.getAuthToken() 方法那样将浏览器登录到Google,并且您可以将它与非Google OAuth2 系统一起使用。

【讨论】:

  • 嗨迈克尔,你如何在之前的令牌过期后获得新的令牌?
  • 此授权类型不允许刷新令牌。会话/令牌过期后,您需要重新验证用户。允许向浏览器中的代码提供刷新令牌会带来许多安全漏洞。
  • 最好使用getAuthToken() 而不是launchWebAuthFlow(),因为我需要用户使用他们的内部 G Suite 帐户登录,如果他们使用前者,您可以通过再次调用它来获得一个新的令牌'使用他们在扩展程序中授权的帐户重新登录 Chrome — 这也很糟糕,但想不出任何其他方法来获取刷新令牌。
  • Michael,实际上有一种方法可以让您使用launchWebAuthFlow() 获取新令牌,请在此处查看我的答案:stackoverflow.com/a/51385987/4932334
  • @MichaelOryl 我正在使用 chrome.identity.launchWebAuthFlow(),但我的扩展未发布,所以我无法获得回调。我检查了文档,但没有找到任何适合当地环境的东西。
【解决方案2】:

正确的答案是使用Google Identity api,它在幕后使用oAuth 2.0 端点到https://.chromiumapp.org/* urls

【讨论】:

  • 此方法需要用户登录Chrome
  • 我对这个问题投了赞成票,但对答案投了反对票:the link 你在你的答案中使用的是一个 实际 教程.. 有代码示例和所有......你的答案很简单指向一些api调用..文档非常稀疏。您自己的问题是是否有在 chrome 扩展中实现 oAuth 2.0 的教程?这个答案没有提供一个
【解决方案3】:

我个人觉得 Chrome 身份 API 很难使用。也许是因为文档写得不好,或者因为谷歌只是简单地对他们自己的服务进行身份验证。

我找到了一个旧库,它可以很好地完成大部分 OAuth 舞蹈和所需的注入。 我做了一些清理并扩展了 API。你可以在这里找到它:https://github.com/whoisjuan/ChromeAuth2

【讨论】:

    【解决方案4】:

    此时,您可能需要在manifest.json中添加"https://www.googleapis.com/auth/contacts"

    ....
    "oauth2": {
        "client_id": "[Your Client Id]",
        "scopes": ["https://www.googleapis.com/auth/contacts"]
      }
    ....
    

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 2017-05-28
    • 1970-01-01
    • 2012-01-17
    • 2014-10-02
    • 2013-11-02
    • 2016-11-12
    • 2013-01-24
    • 1970-01-01
    • 2016-09-30
    相关资源
    最近更新 更多