获取URL#片段XMLHttpRequest

时间:2013-08-13 07:52:42

标签: javascript facebook google-chrome-extension xmlhttprequest

我正在构建一个Chrome扩展程序,允许用户选择Facebook帖子并将其发送到服务器。

我有一个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函数在内容脚本中执行,如果这会产生影响。

编辑:

xhr.responseText如下

成功
安全警告:请将您的密码视为上述URL,不要与any.setTimeout(function(){window.history.replaceState&&& window.history.replaceState( {},“”,“blank.html# = ”);},500);

xhr.responseXML如下

2 个答案:

答案 0 :(得分:1)

我已解决此问题,您无法访问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 });
});

答案 1 :(得分:0)

您能否发布您的回复,执行console.log(xhr.response,xhr.responseText)并在此处发布(使用一些虚拟数据进行相应修改)?我认为你需要操纵一些字符串来获得你需要的价值。