2012-08-22 50 views
0

window.location.hash变量如果我有一个像如何获得在node.js中

www.example.com/path#one=a1&two=a2&three=a3 

一个URL如何直接从node.js的网址检索变量? 因为我使用ExpressJS,我尝试使用req.query.variable(和req.params.variable),但那不会工作...

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

YOUR_REDIRECT_URI# 
access_token=USER_ACCESS_TOKEN 
&expires_in=NUMBER_OF_SECONDS_UNTIL_TOKEN_EXPIRES 

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

+0

url = require('url'); var url_parts = url.parse(urlString); console.log(url_parts); –

回答

3

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

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

我实际的问题是从Facebook获得访问令牌,使用客户端验证[...]我不知道如何来从URL得到的参数...

你也必须“得到”他们客户端以及。

+0

哦哇......我怎么没有意识到......谢谢!我想我会尝试服务器端。 – btru

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])); 

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