Discord OAuth2重定向URI组件出现问题

13

我目前正在为我的网络应用程序开发Discord OAuth2客户端。

无论我怎样尝试设置redirect_uri以使discord不发送错误,我都不能解决它,我一直收到这个消息:

Invalid OAuth2 redirect_uri : You can now close this tab.

截图 (对不起第二行出现了外文)

我的redirect_uri是:

const redirect = encodeURIComponent("http://localhost/callback");

(该网站在服务器上存在并且运行正常。)

** 我尝试了很多组合,包括: - 在域名前添加https://而不是http:// - 在域名后添加.com - 在单词callback后添加斜杠 - 使用普通字符串而不是encodeURIComponent - 通过Discord Developer页面生成oauth2 redirect_uri **

唯一有效的方法是完全从URL参数中删除redirect_uri,这让应用程序工作,但之后没有重定向到正确的位置;

(这是我的oauth2 url):

https://discordapp.com/api/oauth2/authorize?client_id=${id}&redirect_uri=${redirect}&response_type=code&scope=identify%20guilds%20email

其中id = client id in string typeredirect = (上面)的url

感谢任何帮助。

编辑1:故意将redirect_uri设置为错误的URL,会发送一个JSON消息,内容为“Badly formatted redirect_uri.”(不是屏幕截图上可见的那个!)

编辑2:完整的示例URL:https://discordapp.com/oauth2/authorize?client_id=528972063096963140&redirect_uri=http%3A%2F%2Flocalhost%2Fdiscord%2Fcallback&response_type=code&scope=identify%20guilds%20email

3个回答

29

今天我遇到了这个问题,在调试了一段时间后,我发现自己犯了什么错。

在我注册我的应用程序时,Discord要求我提供一个redirect_uri,以便我们指定它,这样Discord就只允许从登录页面重定向到那些URL。但是经过我在项目中进行一番摆弄后,我改变了来自node的重定向url,这与我已经在Discord中指定的不匹配。这就是为什么我遇到了这个问题。

来自我discord开发人员仪表板的屏幕截图(更改此重定向url):

enter image description here

修复方法:前往Discord并更新您的新重定向url(根据您的需求)。这将解决您面临的登录页面错误。记得通过在字段中按Enter键或按页面底部弹出的保存按钮来保存。

希望可以帮助到你!


12
使用 Next-Auth 时,我成功地将我的重定向网址设置为 Discord 设置中的 http://localhost:3000/api/auth/callback/discord

如果使用 Next-Auth,这就是正确的答案 - 谢谢 - Steven Hale

10

我知道这个问题已经解决很久了,但我还是想提供一下解决方法,以防有人遇到同样的问题而不知道发生了什么。

  1. redirect_uri 必须在您的 discord oauth2 应用程序重定向 中进行注册(有关更多详细信息,请参见接受的答案)。
  2. redirect_uri 必须与先前提到的列表中的 URI 完全相同:查询字符串将不起作用
  3. 调用 https://discord.com/api/oauth2/token 端点时,redirect_uri 字段必须与使用 https://discord.com/api/oauth2/authorize 端点生成代码时使用的 URI 相同。

1
哇塞。谢谢你!为什么在文档中没有更明确地说明呢?这个解决了我的问题...!你得到了我的点赞。 - wongz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接