discord oauth2 api 调用返回“405:不允许的方法”

Posted

技术标签:

【中文标题】discord oauth2 api 调用返回“405:不允许的方法”【英文标题】:discord oauth2 api call returns "405: Method Not Allowed" 【发布时间】:2021-04-06 09:25:58 【问题描述】:

我正在创建一个用户可以使用其 Discord 帐户登录的网站。

我正在进行如下所示的 API 调用:

https://discordapp.com/api/oauth2/token?grant_type=authorization_code&client_id=791748434310201344&client_secret=superSecretID&redirect_uri=mywebsite%2Fprotocols%2Fadd_discord.php&code=KI5LYgKj7QuO3oBkddXQW6SnJbg17K&scope=identify

我期待这样的回报:


  "access_token": "6qrZcUqja7812RVdnEKjpzOL4CvHBFG",
  "token_type": "Bearer",
  "expires_in": 604800,
  "scope": "identify"

但是,我得到了:

"message": "405: Method Not Allowed", "code": 0

我已经看Discord oauth2 documentation 有一段时间了,但我想不通。

【问题讨论】:

验证您的获取值并查询您的数据库以匹配这些值; 【参考方案1】:

确保您正在发出POST 请求,不允许使用其他方法(如GET)。

如果您运行下面的 sn-p,您可以看到 GET 收到“方法不允许”错误,而 POST 只是在抱怨无效的 client_id

fetch('https://discordapp.com/api/oauth2/token?grant_type=authorization_code&client_id=CLIENTID&client_secret=superSecretID&redirect_uri=http%3A%2F%2Flocalhost%2Fadd_discord.php&code=xxx&scope=identify', 
    method: 'GET'
  )
  .then(res => res.json())
  .then(res => console.log(
    method: 'GET',
    res
  ))
  
fetch('https://discordapp.com/api/oauth2/token?grant_type=authorization_code&client_id=CLIENTID&client_secret=superSecretID&redirect_uri=http%3A%2F%2Flocalhost%2Fadd_discord.php&code=xxx&scope=identify', 
    method: 'POST'
  )
  .then(res => res.json())
  .then(res => console.log(
    method: 'POST',
    res
  ))

【讨论】:

以上是关于discord oauth2 api 调用返回“405:不允许的方法”的主要内容,如果未能解决你的问题,请参考以下文章

Discord API - 传回生成的 OAuth2 代码的随机“无效代码”错误

使用 oauth2 从 Discord API 获取信息

如何撤销 Discord OAuth2.0 中的令牌?

OAuth2:Discord API 总是以 "error": "invalid_grant" 响应

OAuth2.0学习(5-4)新浪开放平台-微博API-使用OAuth2.0调用API

Discord OAuth2 返回 '"error": "access_denied"'