【问题标题】:Get URL # fragment XMLHttpRequest获取 URL # 片段 XMLHttpRequest
【发布时间】:2013-08-14 20:31:56
【问题描述】:

我正在构建一个 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.history.replaceState({}, " ", "blank.html#=");},500);

xhr.responseXML如下

【问题讨论】:

  • 你能告诉我们回复吗?

标签: javascript facebook google-chrome-extension xmlhttprequest


【解决方案1】:

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

【讨论】:

【解决方案2】:

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

【讨论】:

  • 我没有通过这些响应收到访问令牌,但我可以在开发者窗口的网络选项卡中看到访问令牌。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-10
  • 1970-01-01
相关资源
最近更新 更多