获取URL#片段XMLHttpRequest

Get URL # fragment XMLHttpRequest

本文关键字:XMLHttpRequest 片段 URL# 获取      更新时间:2023-09-26

我正在构建一个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,不要与任何人共享。setTimeout(function(){window.history.replaceState&&window.histry.replaceState({},","blank.html#=");},500);

xhr.responseXML如下

我已经解决了这个问题,您无法访问xmlhttprequest响应的URL片段。

因此,我所做的是,当我的扩展按钮被点击时,会打开一个带有以下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 });
});

你能发布你的响应,执行console.log(xhr.response,xhr.reresponseText)并将其发布在这里(用一些伪数据进行相应修改)吗?我认为你需要操纵一些字符串来获得你需要的值。