【问题标题】:URL parameters from a redirected URL来自重定向 URL 的 URL 参数
【发布时间】:2019-02-27 01:29:46
【问题描述】:

我正在尝试实现一个 OAuth2 服务,在该服务中我能够从服务器接收 授权码,并且服务器将我重定向到带有参数 code (其中code = Authorization Token(授权授权码))

现在我需要使用这个 Authorization token 向服务器发出请求。但是我无法从重定向的 URL 中获取 token 以在我的应用程序中使用。

index.js

app.get('/oauth2', function(req, res){
res.redirect('https://api.codechef.com/oauth/authorize? response_type=code&client_id=CLIENT_ID&state=xyz&redirect_uri=http://localhost:3000/login');

});

通过上面的 sn-p,我可以在重定向的 URL 中获取 授权令牌

http://localhost:3000/login?code=3f608c5f1a019e51997e77bcXXXXXX643ea875ad&state=xyz

现在,我想获取上述 URL 中的 code 并将其与其他一些参数一起用于发出请求。基本上,我需要该 code 作为我的 Nodejs 应用程序中的变量。

【问题讨论】:

  • 3000 端口上正在运行什么? API 还是前端?
  • req.query.code 如果你使用的是快递???
  • 读完你的问题后,我得到的是你需要有一个像router.get('/login',...) 这样的路由,你可以从查询字符串中获取代码,就像我上面的评论一样。
  • @AnandUndavia 我的 NodeJS 应用程序在端口 3000 上运行。@vibhor1997a 是的,我正在使用 express。我试过res.query.code,但它显示为空{}。我什至尝试过res.params.code,但由于 URL 是重定向的,所以没有帮助。另外,对于延迟回答您的问题,我们深表歉意。

标签: node.js api redirect oauth-2.0 request


【解决方案1】:

您需要创建一个与重定向 URL 匹配的 API。

匹配 http://localhost:3000/login?code=<code>&state=<state> 的 API 如下所示:

app.get('/login', (req, res) => { /** Logic */ })

一旦你有了它,从req获取代码和状态就很简单了:

app.get('/login', (req, res) => {
    console.log('code', req.query.code)
    console.log('state', req.query.state)
    /** Logic */
    res.json(req.query); // <-- send them back in case you want them in response
})

如果您仍然将 req.query 作为空对象,请在 cmets 中告诉我。

【讨论】:

  • 乐于助人! :D
猜你喜欢
  • 2013-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-15
  • 1970-01-01
  • 1970-01-01
  • 2014-03-28
相关资源
最近更新 更多