首页 > 解决方案 > 来自重定向 URL 的 URL 参数

问题描述

我正在尝试实现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 中获取授权令牌,如下所示:

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

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

标签: node.jsapiredirectoauth-2.0request

解决方案


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

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

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是空对象,请在评论中告诉我。


推荐阅读