我正在尝试实施 OAuth2 服务,以便能够从服务器接收授权代码,并且服务器使用参数将我重定向到redirect_url >代码 (其中代码=授权令牌(授权授予代码))。
现在,我需要使用此授权令牌向服务器发出请求。但是我无法从重定向的URL中获取令牌来在我的应用程序中使用。
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');
});
使用上面的代码片段,我可以在重定向的URL中获得 Authorization令牌,如下所示:
http://localhost:3000/login?code=3f608c5f1a019e51997e77bcXXXXXX643ea875ad&state=xyz
现在,我想在上面的URL中获取代码,并将其与其他一些参数一起用于发出请求。基本上,我需要 code 作为我的 Nodejs 应用程序中的变量。
答案 0 :(得分: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
作为空对象,请在评论中告诉我。