如何在node.js中的window.location.hash中获取变量

时间:2012-08-22 05:11:36

标签: javascript facebook parsing node.js express

如果我有像

这样的网址
www.example.com/path#one=a1&two=a2&three=a3

如何直接从node.js中的url检索变量? 由于我使用ExpressJS,我尝试使用req.query.variable(和req.params.variable),但这不起作用......

我的实际问题是通过使用客户端身份验证(https://developers.facebook.com/docs/authentication/client-side/)从Facebook获取访问令牌,但它重定向到的网址是结构如下:

YOUR_REDIRECT_URI#
 access_token=USER_ACCESS_TOKEN
 &expires_in=NUMBER_OF_SECONDS_UNTIL_TOKEN_EXPIRES

我不知道如何从网址中获取参数......

2 个答案:

答案 0 :(得分:3)

  

如何直接从node.js中的url检索变量?

完全没有,因为URL的哈希部分没有传输到服务器。

  

我的实际问题是从Facebook获取访问令牌,使用客户端身份验证[...]我不知道如何从网址获取参数......

你也必须“获取”他们客户端

答案 1 :(得分:0)

function parseQueryString(query) {
    var parsed = {};

    query.replace(
        new RegExp('([^?=&]+)(=([^&]*))?', 'g'),
        function ($0, $1, $2, $3) {
            parsed[decodeURIComponent($1)] = decodeURIComponent($3);
        }
    );

    return parsed;
}

var url = "www.example.com/path#one=a1&two=a2&three=a3";

console.log(parseQueryString(url.split('#')[1]));

请注意,这不会尝试检测网址参数的类型。