我可以为chrome扩展中的oauth2回调设置哪个重定向URL?

时间:2015-12-22 16:37:09

标签: javascript google-chrome-extension oauth-2.0 imgur

我想在Chrome扩展程序中使用Imgur API。来自用户输入的验证响应被发送到"重定向URL"在我的应用程序配置文件中设置imgur网页。

如何设置"重定向网址"指向用户的chrome浏览器扩展?

我只看到设置一个小服务器的重要解决方案来跟踪我的用户'代币:

  1. 我的扩展程序会检查imgur令牌:如果找到,请启动扩展程序工作流程,否则请转到步骤2.
  2. 我的扩展要求imgur api提供其身份验证表格。
  3. 用户填写表单,该表单是自我管理的,表单将其用户名/密码发送回imgur服务器。
  4. Imgur服务器向' redirect-url&#39指定。
  5. 这个'重定向网址'是我的服务器URL并且它检索令牌。
  6. [不知道如何执行此步骤]服务器和扩展交换和扩展至少检索珍贵的令牌。
  7. 使用该令牌,扩展程序至少可以显示imgur图片。
  8. 他们的文档提到localhost是一个可能的url重定向。我正在挖掘这个大方向,但它对我没有意义:似乎更像是对开发人员的本地测试而不是我正在寻找的答案。

    感谢您的任何意见。

1 个答案:

答案 0 :(得分:3)

在大多数情况下,令牌会附加到重定向网址。因此,您可以使用chrome.tabs.onUpdated.addListener()收听标签更新,并检查标签网址何时包含"access_token="。现在它将收听每个标签。如果您自己创建身份验证选项卡,则会在其回调中获得一个ID。使用此ID,您可以在chrome.tabs.onUpdated.addListener()内部检查它是否与您创建的标签相同,或者如果标签网址与重定向网址匹配,您可以匹配。两者都有效。

示例代码:

      chrome.tabs.onUpdated.addListener(function authorizationHook(tabId, changeInfo, tab) {
                if (tabId === authenticationTabId && tab.title.indexOf(redirectUrl) >= 0) {
                    //If you don't have the authentication tab id remove that part 
                          if(tab.title.indexOf("access_token=") >=0){//tab url consists of access_token
                            var url = tab.title;
                            /* 
                               Code to extract token from url
                            */
                            chrome.tabs.onUpdated.removeListener(authorizationHook);          
                          }                 
                }
       });

您还需要"tabs"权限才能使用

编辑:您还可以使用chrome.identity.launchWebAuthFlow()。你必须使用:

Javascript来源: https://<extensionid>.chromiumapp.org

重定向网址 https://<extensionid>.chromiumapp.org/provider_cb

以下是使用chrome.identity.launchWebAuthFlow()的{​​{3}}应用的一个很好的示例。可以在扩展中使用相同的代码。