0

如果我有一个像

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 获取访问令牌,但它重定向到的 url 的结构如下:

YOUR_REDIRECT_URI#
 access_token=USER_ACCESS_TOKEN
 &expires_in=NUMBER_OF_SECONDS_UNTIL_TOKEN_EXPIRES

而且我不知道如何从url中获取参数...

4

2 回答 2

3

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

一点也不,因为 URL 的哈希部分不会传输到服务器。

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

您还必须在客户端“获取”它们。

于 2012-08-22T09:12:52.800 回答
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]));

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

于 2012-08-22T05:20:38.743 回答