Oauth 401(未经授权)仅在释放模式下。调试,一切都很好!为什么?

Oauth 401(未经授权)仅在释放模式下。调试,一切都很好!为什么?,oauth,google-chrome-extension,twitter-oauth,Oauth,Google Chrome Extension,Twitter Oauth,我正在为Google Chrome创建一个扩展,但在使用Twitter进行身份验证时遇到了问题 此扩展发布在: 正如您所看到的,我也在使用Dropbox API(它也适用于OAuth 1.0),而且它工作得非常完美 要使用OAuth,请使用位于的名为jsOAuth的库 当用户点击“Twitter”时,会出现一个窗口(弹出窗口)​​真实的: //Request Windows token chrome.windows.create({url: url, type:"popup"}, functio

我正在为Google Chrome创建一个扩展,但在使用Twitter进行身份验证时遇到了问题

此扩展发布在:

正如您所看到的,我也在使用Dropbox API(它也适用于OAuth 1.0),而且它工作得非常完美

要使用OAuth,请使用位于的名为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_

TwitterPage.js代码 然后将显示“身份验证”窗口

完整链接:

正如您在上面的代码中所看到的,一个请求被发送到我的分机。 以下是捕获此请求的代码:

chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
    chrome.windows.remove(sender.tab.windowId, fetchAccessToken);
});
fetchAccessToken函数: 查看控制台,错误是:
GEThttps://api.twitter.com/oauth/access_token 401(未经授权)
显示

完整图像:

问题 怎么了


分步调试,验证成功!?!为什么?

请求了两次
GET/oauth/access\u令牌。一个成功,另一个不成功。它可能正在获取
401
,因为
request\u令牌只有效一次。如果您停止它执行两次,它应该是好的


在旁注中,即使在获取
access\u令牌时,您也包括
oauth\u回调
。这不是首选。

如果出现错误,系统将重试。401发生在两次呼叫中(第一次和第二次尝试)。第二次尝试时我得到了200。您可能会遇到Twitter基础设施中的复制滞后。您在一台服务器上授权一个请求\u令牌,而获取访问\u令牌的请求到达另一台未意识到其已被授权的服务器。尝试在获取访问令牌之前添加5秒超时。
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);
}