You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Discord OAuth2如何正确配置鉴权头以获取用户信息,解决401未授权错误

错误原因

  • 你直接将授权回调返回的code当作访问令牌使用,这不符合OAuth2流程,该code必须先兑换为access_token后才能用于请求用户信息接口
  • 请求Discord API时使用了HTTP协议,官方接口仅支持HTTPS访问,会直接导致鉴权失败

修复步骤

  1. 先调用Discord令牌兑换接口,用code换取access_token
  2. 用兑换得到的access_token作为Bearer参数请求用户信息接口
  3. 将所有Discord API请求地址改为HTTPS协议

修复后代码

app.get('/oauth', async (req, res) => {
  const fetch = require('node-fetch');
  const CLIENT_ID = '你的客户端ID';
  const CLIENT_SECRET = '你的客户端密钥';
  const REDIRECT_URI = 'https://widgets.fireyjs.repl.co/oauth';

  if (req.query.code) {
    try {
      // 第一步:用code兑换access_token
      const tokenRes = await fetch('https://discord.com/api/oauth2/token', {
        method: 'POST',
        body: new URLSearchParams({
          client_id: CLIENT_ID,
          client_secret: CLIENT_SECRET,
          grant_type: 'authorization_code',
          code: req.query.code,
          redirect_uri: REDIRECT_URI,
          scope: 'identify guilds.join messages.read'
        }),
        headers: {
          'Content-Type': 'application/x-www-form-urlencoded'
        }
      });
      const tokenData = await tokenRes.json();
      
      // 第二步:用access_token获取用户信息
      const userRes = await fetch('https://discord.com/api/users/@me', {
        headers: {
          Authorization: `Bearer ${tokenData.access_token}`
        }
      });
      const userInfo = await userRes.json();
      console.log(userInfo);
      
      res.send('CODE: ' + req.query.code);
    } catch (err) {
      console.error('请求出错:', err);
      res.status(500).send('请求失败');
    }
  } else {
    res.send('<script>window.location.assign("https://discord.com/api/oauth2/authorize?client_id=880520534125838356&redirect_uri=https%3A%2F%2Fwidgets.fireyjs.repl.co%2Foauth&response_type=code&scope=identify%20guilds.join%20messages.read")</script>')
  }
});

注意事项

  • 客户端密钥CLIENT_SECRET需从Discord开发者后台获取,注意不要泄露到前端或者公开代码仓库
  • 兑换令牌时传入的redirect_uri必须和授权链接中的redirect_uri完全一致,否则会兑换失败

内容的提问来源于stack exchange,提问作者FireyJS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 10:21:02