首页 文章

Discord OAuth代码使用

提问于
浏览
6

我对使用Discord API与Discord接口感兴趣 . 我会将他们的文档描述为“稀疏”,但也许我只是没有找到正确的位置 . 我的大多数信息来自此页面:

https://discordapp.com/developers/docs/topics/oauth2

我已经设置了我的Discord公会和应用程序(甚至是机器人,这可能是不必要的) . 我的具体计划是允许用户授予我的网站权限,将其添加到私人Discord公会/服务器 . 我在我的网站页面上有一个引用此URL的超链接:

https://discordapp.com/api/oauth2/authorize?client_id=[ClientID]&scope=guilds.join&response_type=code&redirect_uri=[RedirectURI]

这部分似乎运作良好 . 用户批准该请求 . 然后,用户将在查询字符串中使用“代码”键值对发送回我的站点 . 我认为这段代码就是所谓的“授权代码” . 那么如何使用此授权码将用户添加到我的公会?我在Discord网站上找到了这个页面:

https://discordapp.com/developers/docs/resources/guild#add-guild-member

从该页面我可以看到我需要启动此URL的PUT:

https://discordapp.com/api/guilds/ / members /

但我不知道 . 我只有一个授权码 .

它还说,“...如果你拥有guilds.join范围的用户,你有一个有效的oauth2访问令牌 . ”我没有访问令牌 . 同样,我只有一个授权码 .

所以在我看来,我需要以某种方式交换此授权码以获取访问令牌和用户ID . 有人能告诉我该怎么做吗?我一直在尝试使用以下URL,但我不知道使用什么方法(GET,POST等)或发送它的参数:

https://discordapp.com/api/oauth2/token

因为我想了解其工作方式的内在性,我更愿意知道如何使用普通的Web请求(例如HttpWebRequest和WebClient,而不是使用某些OAuth库) .

更新

我决定阅读(有选择地)这个RFC:

https://tools.ietf.org/html/rfc6749#section-4.1.3

我已将我认为最合适的部分联系起来 . 似乎正确的过程是向以下URL和参数发送POST请求:

https://discordapp.com/api/oauth2/token

grant_type = authorization_code&代码= [AuthorizationCode]&REDIRECT_URI = [RedirectURI]&CLIENT_ID = [客户端ID]

这似乎也符合彼得G的答案 . 不幸的是,此请求因401(未授权)错误而失败 . 所以我认为这是一个死路一条 . 我已经尝试了几次,但希望有一个解决方案 . 我收到了这个回复机构:

{“error”:“invalid_client”}

我收到了这些 Headers :

连接:关闭Pragma:no-cache Strict-Transport-Security:max-age = 31536000; includeSubDomains Alt-Svc:clear CF-RAY:[RedactedJustInCase] Content-Length:27 Cache-Control:no-store Content-Type:application / json日期:星期五,2017年4月7日01:12:19 GMT Set-Cookie:__ cfduid = [RedactedJustInCase]; expires =周六,07-Apr-18 01:12:19 GMT;路径= /;域= .discordapp.com; HttpOnly服务器:cloudflare-nginx通过:1.1谷歌

1 回答

相关问题