错误 redirect_uri:“不是格式正确的 URL。”在不和谐的 OAuth2 中
Posted
技术标签:
【中文标题】错误 redirect_uri:“不是格式正确的 URL。”在不和谐的 OAuth2 中【英文标题】:Error redirect_uri: 'Not a well formed URL.' in discord OAuth2 【发布时间】:2021-06-30 18:35:55 【问题描述】:我正在尝试为不和谐做一个 OAuth2,我的代码是这样的:
const express = require('express');
const fetch = require('node-fetch');
const btoa = require('btoa');
const catchAsync = require('../utils');
const querystring = require('querystring')
const router = express.Router();
const CLIENT_ID = '801791455034867723';
const CLIENT_SECRET = 'hehe :D, it\'s secret!';
const redirect = encodeURIComponent('http://localhost:50451/api/discord/callback');
router.get('/login', (req, res) =>
res.redirect(`https://discordapp.com/api/oauth2/authorize?client_id=$CLIENT_ID&scope=identify&response_type=code&redirect_uri=$redirect`);
);
router.get('/callback', catchAsync(async (req, res) =>
if (!req.query.code) throw new Error('NoCodeProvided');
const code = req.query.code;
const creds = btoa(`$CLIENT_ID:$CLIENT_SECRET`);
const response = await fetch(`https://discordapp.com/api/oauth2/token`,
method: 'POST',
headers:
Authorization: `Basic $creds`,
'Content-Type': 'application/x-www-form-urlencoded'
,
body: querystring.stringify(
grant_type: 'authorization_code',
code: code,
redirect_uri: redirect
),
);
const json = await response.json();
res.redirect(`/?token=$json.access_token`);
));
module.exports = router;
每次我在 discord 网站上运行并授予权限时,他都会给出以下错误: redirect_uri: [ 'Not a well-formed URL。' ] 。
我哪里做错了?
【问题讨论】:
【参考方案1】:所以你的重定向变量正在使用函数“encodeURIComponent”
const redirect = encodeURIComponent('http://localhost:50451/api/discord/callback');
尝试使用该回调字符串的变量,但不使用该函数调用
const redirect2 = 'http://localhost:50451/api/discord/callback'
我实际上和你关注的是同一篇 Medium 文章!我认为它有点过时了,所以发生了错误。
然后在你的正文中使用redirect2
body: querystring.stringify(
grant_type: 'authorization_code',
code: code,
redirect_uri: redirect
),
【讨论】:
以上是关于错误 redirect_uri:“不是格式正确的 URL。”在不和谐的 OAuth2 中的主要内容,如果未能解决你的问题,请参考以下文章
H5页面获取微信信息授权,微信授权,微信授权“redirect_uri 参数错误
PayPal 集成 Android 沙盒 redirect_uri 错误
IdentityServer4 无效的 Redirect_Uri 错误