401 (неавторизовано) только в режиме разблокировки.Отладка, все работает отлично!Зачем? - PullRequest
0 голосов
/ 13 января 2012

Я создаю расширение для Google Chrome, и у меня возникают проблемы с аутентификацией в Twitter.

Это расширение опубликовано в по этой ссылке :

Как видите, я также использую Dropbox API (который также работает с OAuth 1.0), и он отлично работает!

Для работы с OAuth используйте библиотеку jsOAuth, доступную по по этой ссылке .

Когда пользователь нажимает на «Твиттер», появляется окно (всплывающее окно), которое становится аутентичным:

//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

$(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);
    });
});

Затем появится окно аутентификации

Request access window

Полная ссылка: http://i.imgur.com/tikh4.png

Как видно из приведенного выше кода, на мой добавочный номер отправляется запрос. Ниже приведен код, который фиксирует этот запрос:

chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
    chrome.windows.remove(sender.tab.windowId, fetchAccessToken);
});

Функция 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)

Error

Полное изображение: http://i.stack.imgur.com/8MgNw.png

Вопросы

Что не так?

Пошаговая отладка, аутентификация выполнена успешно!?! Почему?

1 Ответ

0 голосов
/ 14 января 2012

GET /oauth/access_token запрашивается дважды. Один преуспевает, а другой нет. Вероятно, он получает 401, потому что request_token действителен только один раз. Если вы остановите его выполнение дважды, все будет в порядке.

На боковой ноте вы включаете oauth_callback даже при получении access_token. Это не является предпочтительным.

...