如何撤销 Discord OAuth2.0 中的令牌?
Posted
技术标签:
【中文标题】如何撤销 Discord OAuth2.0 中的令牌?【英文标题】:How to revoke a token in Discord OAuth2.0? 【发布时间】:2020-09-04 13:34:34 【问题描述】:为了使用 Discord 的 API,我需要一个令牌,并打开一个链接,例如
https://discordapp.com/api/oauth2/authorize?client_id=<client_id>&redirect_uri=<redirect_url>&response_type=token&scope=identify
然后我将令牌设置为发出给 Discord API 的请求的 authorization
(格式为 Bearer <token>
)标头。
假设我想“注销”,这样就不能再使用某个令牌来执行此类请求。在这种情况下,我必须撤销该令牌,对吧?
所以在阅读了 Discord 的文档并进行了一些调整后,我决定我必须向 URL 发出 POST 请求,例如
https://discordapp.com/api/oauth2/token/revoke
和content-type
这个请求的header应该设置为x-www-form-urlencoded
。
当我这样做时,我从 discord 的服务器收到一条错误消息,其中包含 error: "invalid_client"
的消息
我做错了什么?
【问题讨论】:
【参考方案1】:所以问题在于我发送的数据的实际格式。我正在发送 JSON 数据,因为我认为设置特定的标头会自动将数据转换为正确的格式,但事实证明我必须使用 FormData
对象以正确的格式创建数据,之后我还删除了我明确设置标题的行,在这些步骤之后一切正常。
【讨论】:
你能解释一下你是怎么做到的吗?我也在研究它,无法弄清楚。 @GaborSzita 我现在没有代码,但您可以简单地用谷歌搜索 FormData 示例。 FormData 应该使用 new 关键字创建。让数据 = 新的 FormData();等等。然后你可以添加你的 key:value 对,然后你可以发送它【参考方案2】:如果您遇到这个问题并且想知道撤销令牌的完整 API 调用是什么,这里是:
POST https://discord.com/api/oauth2/token/revoke
Content-Type: application/x-www-form-urlencoded
data:
client_id: <client_id>
client_secret: <client_secret>
token: <access_token>
【讨论】:
以上是关于如何撤销 Discord OAuth2.0 中的令牌?的主要内容,如果未能解决你的问题,请参考以下文章