我正在构建一个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如下
空
答案 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)并在此处发布(使用一些虚拟数据进行相应修改)?我认为你需要操纵一些字符串来获得你需要的价值。