我想出了如何获取登录按钮并通过php代码重定向。但是,Chrome Dev仅允许客户端代码。如何通过Twitter获取我的Chrome应用程序的客户端代码登录?
有没有办法为Chrome应用程序运行php代码?
答案 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的人。我会尽力进一步调查。
您需要使用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令牌秘密。
这是一个简短的例子:
,请确保您的内容脚本与您在Twitter应用设置回调网址中放置的域相同:
"content_scripts": [{
"matches": ["https://andyjiang.com/*"],
"js": ["js/session.js"]
}]
然后,在你的js / session.js文件中,有这种逻辑:
chrome.runtime.sendMessage({type: 'auth', session:
window.location.search.substr(1)}, function(response) {
window.open('', '_self', '');
window.close();
});
在后台脚本中,有一些逻辑可以侦听消息,获取令牌,并使用Twitter的API进行oauth进程的第三站,最终获得oauth令牌和oauth令牌秘密,然后您可以将其保存在localStorage或chrome.storage中。
以下是逻辑的示例代码:
https://github.com/lambtron/chrome-extension-twitter-oauth-example
希望有所帮助!