Я создаю расширение для 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);
});
});
Затем появится окно аутентификации
Полная ссылка: 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)
Полное изображение: http://i.stack.imgur.com/8MgNw.png
Вопросы
Что не так?
Пошаговая отладка, аутентификация выполнена успешно!?! Почему?