我正在为Google Chrome创建扩展程序,但我无法通过Twitter进行身份验证。
此扩展程序发布在this link:
中正如您所看到的,我也在使用Dropbox API(也可以与OAuth 1.0配合使用),而且效果非常好!
要使用OAuth,请使用this link处提供的名为jsOAuth的库。
当用户点击“Twitter”时,窗口(弹出窗口)似乎变为可信:
//Request Windows token
chrome.windows.create({url: url, type:"popup"}, function(win){
chrome.tabs.executeScript(win.tabs[0].id, { file: "/scripts/jquery-1.7.1.min.js" }, function() {
chrome.tabs.executeScript(win.tabs[0].id, { file: "/scripts/querystring-0.9.0-min.js" }, function() {
chrome.tabs.executeScript(this.args[0], { file: "/scripts/services/TwitterPage.js" });
});
});
});
url = _https://api.twitter.com/oauth/authorize?oauth_token = XXX& oauth_token_secret = YYY& oauth_callback_confirmed = true_
$(document).ready(function() {
$("#allow").click(function(){
var token = $.QueryString("oauth_token");
var secret = $.QueryString("oauth_token_secret");
var data = { oauth_token: token, oauth_secret: secret };
chrome.extension.sendRequest(data);
});
});
然后显示验证窗口
完整链接:http://i.imgur.com/tikh4.png
正如您在上面的代码中看到的,请求被发送到我的扩展程序。 以下是捕获此请求的代码:
chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
chrome.windows.remove(sender.tab.windowId, fetchAccessToken);
});
fetchAccessToken = function() {
oauthObj.fetchAccessToken(function(){
console.log("This code is only executed when debug step by step")
}, failureHandler);
}
查看控制台,显示错误:GET https://api.twitter.com/oauth/access_token 401 (Unauthorized)
完整图片:http://i.stack.imgur.com/8MgNw.png
有什么问题?
逐步调试,验证成功执行!?!为什么呢?
答案 0 :(得分:0)
GET /oauth/access_token
被要求两次。一个成功,另一个不成功。它可能会获得401
,因为request_token
仅有效一次。如果你停止它执行两次它应该没问题。
在旁注上,即使在获得oauth_callback
时,您也会包含access_token
。这不是首选。