如何将twitter Oauth实施到我的Google Chrome扩展程序中

时间:2016-08-06 17:22:46

标签: twitter google-chrome-extension oauth google-chrome-devtools

我想出了如何获取登录按钮并通过php代码重定向。但是,Chrome Dev仅允许客户端代码。如何通过Twitter获取我的Chrome应用程序的客户端代码登录?

有没有办法为Chrome应用程序运行php代码?

2 个答案:

答案 0 :(得分:1)

您可以使用Chrome Identity API。有关使用launchWebAuthFlow API函数发出请求的简单说明,请查看Non-Google account authentication

以前,有用于实施OAuth流程的客户端库,例如oauth2-extensions描述的here,但幸运的是不再需要

更新

我一直在努力寻找一个为Twitter工作的例子,但还没到那里。 Twitter似乎没有与预期的OAuth2 URL匹配的API端点。我认为在Twitter的情况下,你可能不得不使用OAuth 1.0a,毕竟这需要一个库。我发现了一个叫CodeBird的人。我会尽力进一步调查。

使用Chrome Identity API授权Instagram的示例

您需要使用https://abcdefghijklmnopqrstuvwxyzabcdef.chromiumapp.org/intagram_cb向您的提供商注册客户端,其中'abcdefghijklmnopqrstuvwxyzabcdef'替换为您的扩展ID,intagram_cb是路径的名称,以便能够区分您希望的其他提供商在扩展中进行身份验证。如果你只有一个,那么你可以省略它。

将提供程序添加到manifest.json文件中的permissions属性:

"permissions": [
   "*://*.instagram.com/*"
]

获取访问令牌。您从提供商帐户获取client_id令牌:

var redirect_uri = chrome.identity.getRedirectURL("intagram_cb");
var client_id = "123456789012345";
var auth_url = "https://instagram.com/oauth/authorize/?" +
    "client_id=" + client_id + "&" +
    "response_type=token&" +
    "redirect_uri=" + encodeURIComponent(redirect_uri);

chrome.identity.launchWebAuthFlow({'url':auth_url, 'interactive': true},
     function(redirect_url) {
         // extract the token from this url and use it for future requests
         var accessToken = redirect_url.substring(redirect_url.indexOf("=") + 1);
     }
});

答案 1 :(得分:1)

以下是CodeBird的另一种替代方法,用于在Chrome扩展程序中验证Twitter用户。

这种方法的关键是为Twitter提供适用于您应用的回调网址的合法域名。然后,使用内容脚本将脚本注入到同一个域中。该脚本将解析URL的查询字符串以获取令牌,并将消息中的这些令牌发送到您的扩展程序的后台脚本。您的后台脚本将获取令牌,然后执行oauth进程的第三段,最终将获得oauth令牌和oauth令牌秘密。

这是一个简短的例子:

    在您的manifest.json中
  1. ,请确保您的内容脚本与您在Twitter应用设置回调网址中放置的域相同:

    "content_scripts": [{
         "matches": ["https://andyjiang.com/*"],
        "js": ["js/session.js"]
    }]
    
  2. 然后,在你的js / session.js文件中,有这种逻辑:

    chrome.runtime.sendMessage({type: 'auth', session: 
    window.location.search.substr(1)}, function(response) {
        window.open('', '_self', '');
        window.close();
    });
    
  3. 在后台脚本中,有一些逻辑可以侦听消息,获取令牌,并使用Twitter的API进行oauth进程的第三站,最终获得oauth令牌和oauth令牌秘密,然后您可以将其保存在localStorage或chrome.storage中。

  4. 以下是逻辑的示例代码:

    https://github.com/lambtron/chrome-extension-twitter-oauth-example

    希望有所帮助!