Javascript 错误重定向uri:';不是一个格式良好的URL;不和谐的OAuth2

Javascript 错误重定向uri:';不是一个格式良好的URL;不和谐的OAuth2,javascript,oauth-2.0,discord,fetch,Javascript,Oauth 2.0,Discord,Fetch,我正在尝试为discord执行OAuth2,我的代码是: const express=require('express'); const fetch=require('node-fetch'); 常量btoa=要求('btoa'); const{catchAsync}=require('../utils'); const querystring=require('querystring') const router=express.router(); const CLIENT_ID='80179

我正在尝试为discord执行OAuth2,我的代码是:

const express=require('express');
const fetch=require('node-fetch');
常量btoa=要求('btoa');
const{catchAsync}=require('../utils');
const querystring=require('querystring')
const router=express.router();
const CLIENT_ID='801791455034867723';
const CLIENT_SECRET='hehe:D,这是秘密!';
const redirect=encodeURIComponent('http://localhost:50451/api/discord/callback');
路由器.get('/login',(req,res)=>{
res.重定向(`https://discordapp.com/api/oauth2/authorize?client_id=${CLIENT\u ID}&scope=identify&response\u type=code&redirect\u uri=${redirect}`);
});
router.get('/callback',catchAsync(async(req,res)=>{
如果(!req.query.code)抛出新错误('NoCodeProvided');
const code=req.query.code;
const creds=btoa(`${CLIENT\u ID}:${CLIENT\u SECRET}`);
const response=等待获取(`https://discordapp.com/api/oauth2/token`,
{
方法:“POST”,
标题:{
授权:`Basic${creds}`,
“内容类型”:“应用程序/x-www-form-urlencoded”
},
正文:querystring.stringify({
授权类型:“授权码”,
代码:代码,
重定向:重定向
}),
}
);
const json=await response.json();
res.redirect(`/?token=${json.access_token}`);
}));
module.exports=路由器;
每次我在discord网站上运行并授予权限时,他都会给出以下错误:{redirect_uri:['不是一个格式正确的URL.']}


我哪里出错了?

所以重定向变量使用了函数“encodeURIComponent”

尝试使用回调字符串的变量,但不使用该函数调用

const redirect2 = 'http://localhost:50451/api/discord/callback'
事实上,我和你在看同一篇媒体文章!我认为它有点过时,所以发生了错误

然后在体内使用重定向2

            body: querystring.stringify({
              grant_type: 'authorization_code',
              code: code,
              redirect_uri: redirect
            }),
            body: querystring.stringify({
              grant_type: 'authorization_code',
              code: code,
              redirect_uri: redirect
            }),