如何通过OAuth2获取Discord账号数据?拿到授权码后如何拉取用户信息
Discord OAuth2 获取用户信息操作步骤
- 第一步:用回调获取的code兑换访问令牌
你需要向Discord的令牌接口发起POST请求,请求携带以下参数:client_id:你的Discord应用客户端IDclient_secret:你的Discord应用客户端密钥grant_type:固定填写authorization_codecode:回调地址query参数中获取的code值redirect_uri:必须和生成授权链接时填写的重定向地址完全一致,即你设置的https://bouncerbot.goatcode.it/index.htmlscope:和授权时申请的权限范围保持一致,要获取用户基础信息必须包含identify权限
请求头设置Content-Type: application/x-www-form-urlencoded,请求成功后会返回包含access_token、token_type、refresh_token在内的响应数据。
- 第二步:使用访问令牌拉取用户数据
拿到access_token后,向Discord的用户信息接口发起GET请求,请求头设置为Authorization: Bearer 替换为你获取到的access_token,接口返回的数据中就包含你需要的所有用户字段:- 用户名对应
username字段 - 用户唯一ID对应
id字段 - 头像哈希值对应
avatar字段,可自行拼接为完整的头像资源地址
如果你授权时申请了guilds权限,还能同时拉取该用户所属的全部服务器列表,正好可以用来匹配确认哪些服务器开通了你的付费订阅服务。
- 用户名对应
注意事项
回调返回的code有效期仅为10分钟,且只能使用一次,重复提交兑换请求会直接失效,需要引导用户重新授权获取新的code
client_secret属于核心敏感信息,所有涉及该参数的请求必须在后端服务执行,绝对不能写在前端页面代码中,避免被盗用导致应用被恶意操作
兑换得到的access_token默认有效期为7天,过期后可以使用同步返回的refresh_token进行刷新,无需用户重复授权登录。
内容的提问来源于stack exchange,提问作者Conta
相关产品推荐
相关产品推荐

