Discord OAuth2 接入记录
背景
Discord OAuth(OAuth 2.0)是一种授权框架,它允许应用程序在用户的同意下获得有限的访问权限,而无需获取用户的密码。在Discord平台上,开发者可以使用OAuth来构建机器人或集成服务,使他们能够执行各种动作,例如访问服务器、发送消息或更改用户的昵称等。
以下是关于Discord OAuth的一些关键点:
OAuth流程:开发者创建一个URL,其中包含所请求权限的范围(scope)。用户点击这个URL后,会被引导到Discord的登录页面,一旦登录并授权,Discord就会向应用程序提供一个授权码。应用程序使用这个授权码来获取访问令牌(access token),然后可以使用此令牌来代表用户执行操作。
权限范围(Scopes):Discord定义了一组权限范围,用以限定应用程序可以访问哪些资源和数据。例如,“guilds”范围允许应用程序列出用户加入的服务器,“messages.read”让应用程序读取用户所能看到的消息等。
令牌(Tokens):
访问令牌(Access Token):这是应用程序在用户授权后获取的令牌,用于API调用。
刷新令牌(Refresh Token):当访问令牌过期时,可以使用刷新令牌来获取新的访问令牌。
重定向URI:在OAuth授权流程中,用户完成授权后将被重定向回应用程序的指定地址。这个地址需要在Discord开发者门户中注册。
安全性:由于涉及用户数据和权限,开发者需要确保整个授权流程的安全性,比如通过使用HTTPS、妥善存储和管理令牌等措施来保护用户信息不被泄露。
Discord OAuth强大且灵活,适用于多种开发场景,从简单的信息查询到复杂的机器人互动,均可通过OAuth实现与Discord的高效整合。
本教程给出了绑定Discord与第三方应用账号的开发示例与详细步骤。
详细步骤
注册一个developer application
获取Discord OAuth 的Client ID和Client Secret
设置redirect uri
以授权码流程为例(业界首选)
首先在Discord Portal 生成对应的鉴权链接,本例中使用的 redirect uri 是https://dora.run/integration/connect?service=discord
用户点击鉴权链接后会触发授权,授权成功后跳转到开发者指定的redirect uri,并会在url中附上code参数
在redirect uri处,开发者调用第三方账号的登录鉴权操作获取第三方应用账号的token。一种方式是在该页面检查用户的登录状态,如果发现用户已登录则直接使用当前存储在浏览器的登录token,如果用户未登录则跳转至第三方应用账号的登录页面,完成登录后跳转回redirect uri。
在同时持有discord授权码和第三方应用账号token的情况下,调用第三方应用后端接口完成账号绑定操作。在后端接口中,应当使用授权码code获取discord对应权限的access token,并用access token获取用户的discord相关信息,完成绑定操作。