0

Im создает расширение chrome, которое позволит пользователю выбирать Facebook-сообщения и отправлять их на сервер.Получить URL-адрес # XMLHttpRequest

У меня есть XMLHTTPRequest, что я посылаю Facebook, чтобы получить маркер доступа следующим образом:

function GetToken() { 
var xhr = new XMLHttpRequest(); 
xhr.open("GET", "https://www.facebook.com/dialog/oauth?client_id=MY_APP_ID_HERE&redirect_uri=https://www.facebook.com/connect/login_success.html&response_type=token"); 
xhr.send(); 
xhr.onreadystatechange = function() { 
if (xhr.readyState == 4 && xhr.status == 200) { 
     xxxxxxxxxxxxxxxxxx 
     xhr.close; 
    } 
} 

}

Объект XMLHttpRequest отправляется на сервер успешно, и я получить доступ токен в ответ, но я не знаю, как получить к нему доступ.

Если у меня открыто окно консоли на chrome и выберите вкладку в сети, я могу видеть отправленный запрос и полученный ответ (с токеном доступа), но он получен как фрагмент URL-адреса, и я не есть ключ к тому, как получить к нему доступ.

Функция GetToken выполняется в скрипте содержимого, если это имеет значение.

EDIT:

xhr.responseText выглядит следующим образом

Success
БЕЗОПАСНОСТИ ПРЕДУПРЕЖДЕНИЕ: Пожалуйста обработать URL выше, как вы бы ваш пароль и не делиться ею с anyone.setTimeout (функция() {окно .history.replaceState & & window.history.replaceState ({}, "", "blank.html # =");}, 500);

xhr.responseXML выглядит следующим образом

нуль

+0

Можете ли вы показать нам ответ? – karaxuna

ответ

0

Я решил эту проблему, вы не сможете получить доступ к фрагменту URL-адреса ответа xmlhttprequest.

так что я сделал это, когда нажата кнопка расширения, открывается новая вкладка с указанным ниже URL-адресом, а затем скрипт содержимого выполняется немедленно, чтобы получить фрагмент URL-адреса до его удаления.

chrome.browserAction.onClicked.addListener(function(tab) { 
var Token_url = "https://www.facebook.com/dialog/oauth?client_id=MY_APP_ID_HERE&redirect_uri=https://www.facebook.com/connect/login_success.html&response_type=token"; 
    chrome.tabs.create({ "url": Token_url, "index": tab.tabId }); 
    chrome.tabs.executeScript(tab.tabId, { file: 'FbToken.js', runAt: 'document_start' }); 
}); 

FbToken.js это простой файл, который содержит:

var AccessToken = window.location.hash; 

chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) { 
if (request.greeting == "AccessToken") 
sendResponse({ Token: AccessToken }); 
}); 
0

Можете ли вы опубликовать свой ответ, выполнение console.log (xhr.response, xhr.responseText) и разместить его здесь (модификации соответственно с некоторым соской данные)? Я думаю, вам нужно манипулировать некоторыми строками, чтобы получить нужную вам ценность.

+0

Я не получаю токен доступа через любой из этих ответов, но я вижу маркер доступа на вкладке сети окна разработчика. – user2659831

Смежные вопросы