在 express 应用程序中解析 url 哈希片段
Parse url hash fragment in express application
我正在编写一个快速应用程序,我必须使用 oauth 2.0 流程对用户进行身份验证。我已成功将用户重定向到 oauth 提供程序,并且提供程序在 oauth 回调中发送了访问令牌。像
http://localhost:4000/oauth/callback#access_token=<token>
现在我有一个像
这样的快速路由处理程序
app.get('/oauth/callback', function(req, res, next) {
});
我知道哈希片段没有传递到服务器,但这是一个 oauth 回调。
如何在路由处理程序中获取 url 散列片段?
我为 Contentful 工作。
不幸的是,目前这是我们的 OAuth 回调的工作方式,我们不会发回查询字符串参数。我已经提到并讨论过这个问题,我们会在某个时候解决这个问题,但我们现在没有确切的时间框架。
您目前可以做的最好的事情是从您的 Express 应用程序提供一个普通的 HTML 页面,其中包含一些 javascript 将从 window.location.hash 中提取令牌,然后向您的 /oauth/callback?access_token=令牌端点发出请求。
URL 包含 access_token
参数。这意味着您已经使用了 Implicit Flow。在隐式流中,参数必须嵌入到片段部分。该行为不是 OAuth 服务器的错误。
如果你想通过查询部分接收参数,你必须使用Authorization Code Flow。
此外,如果 OAuth 服务器支持 OAuth 2.0 Form Post Response Mode,您的重定向端点可以通过将 response_mode=form_post
添加到您的授权请求来接收数据作为 POST
请求。该规范与trodrigues描述的想法类似。
下面的table显示了“response_type
/response_mode
”和“HTTP status/data位置”之间的关系。
见“Response Format" in Authlete's Definitive Guide for details about the response format of authorization endpoint.
我正在编写一个快速应用程序,我必须使用 oauth 2.0 流程对用户进行身份验证。我已成功将用户重定向到 oauth 提供程序,并且提供程序在 oauth 回调中发送了访问令牌。像
http://localhost:4000/oauth/callback#access_token=<token>
现在我有一个像
这样的快速路由处理程序app.get('/oauth/callback', function(req, res, next) {
});
我知道哈希片段没有传递到服务器,但这是一个 oauth 回调。
如何在路由处理程序中获取 url 散列片段?
我为 Contentful 工作。
不幸的是,目前这是我们的 OAuth 回调的工作方式,我们不会发回查询字符串参数。我已经提到并讨论过这个问题,我们会在某个时候解决这个问题,但我们现在没有确切的时间框架。
您目前可以做的最好的事情是从您的 Express 应用程序提供一个普通的 HTML 页面,其中包含一些 javascript 将从 window.location.hash 中提取令牌,然后向您的 /oauth/callback?access_token=令牌端点发出请求。
URL 包含 access_token
参数。这意味着您已经使用了 Implicit Flow。在隐式流中,参数必须嵌入到片段部分。该行为不是 OAuth 服务器的错误。
如果你想通过查询部分接收参数,你必须使用Authorization Code Flow。
此外,如果 OAuth 服务器支持 OAuth 2.0 Form Post Response Mode,您的重定向端点可以通过将 response_mode=form_post
添加到您的授权请求来接收数据作为 POST
请求。该规范与trodrigues描述的想法类似。
下面的table显示了“response_type
/response_mode
”和“HTTP status/data位置”之间的关系。
见“Response Format" in Authlete's Definitive Guide for details about the response format of authorization endpoint.