在express应用程序中解析url散列片段

时间:2015-11-12 08:20:37

标签: javascript node.js express oauth contentful

我正在编写一个快速应用程序,我必须使用oauth 2.0流程对用户进行身份验证。我已成功将用户重定向到oauth提供程序,并且提供程序在oauth回调中发送访问令牌。像

这样的东西
http://localhost:4000/oauth/callback#access_token=<token>

现在我有一个像

这样的快速路线处理程序
app.get('/oauth/callback', function(req, res, next) {
});

我知道哈希片段没有传递给服务器,但这是一个oauth回调。

如何在路由处理程序中获取url哈希片段?

2 个答案:

答案 0 :(得分:4)

网址包含access_token参数。这意味着您已使用Implicit Flow。在Implicit Flow中,参数必须嵌入片段部分。该行为不是OAuth服务器的错误。

如果您想通过查询部分接收参数,则必须使用Authorization Code Flow

此外,如果OAuth服务器支持OAuth 2.0 Form Post Response Mode,您的重定向终端可以通过向您的授权请求添加POST作为response_mode=form_post请求来接收数据。该规范类似于trodrigues描述的想法。

下表显示了&#34; response_type / response_mode&#34;之间的关系。和&#34; HTTP状态/数据位置&#34;。

enter image description here

参见&#34; Response Format&#34;有关Authlete的响应格式的详细信息,请访问Definitive Guide authorization endpoint

答案 1 :(得分:0)

我为Contentful工作。

不幸的是,目前这是我们的OAuth回调的工作方式,我们不会发送回查询字符串参数。我已经提到并讨论了这个问题,我们会在某个时候解决这个问题,但目前我们没有确切的时间框架。

目前你可以做的最好的事情是从你的快递应用程序提供一个纯HTML页面,它有一些javascript,它将从window.location.hash中提取令牌,然后向你的/ oauth / callback发出请求? access_token =令牌端点。