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

非主机设备无法通过Discord OAuth(Auth.js)登录的问题排查

解决Discord OAuth在开发环境通过IP访问时的登录失败问题

问题分析

报错invalid_grant: Invalid "redirect_uri" in request的核心原因是:Auth.js(原NextAuth.js)在开发环境默认使用localhost作为生成回调URL的基础地址,当你通过主机IP访问应用时,应用内部向Discord发起授权请求时携带的redirect_uri仍然是http://localhost:3000/api/auth/callback/discord,这和你在Discord后台配置的IP地址版重定向URI不匹配,导致Discord验证失败。

解决步骤

  • 设置NEXTAUTH_URL环境变量
    在项目根目录的.env.local(或.env)文件中添加:

    NEXTAUTH_URL=http://[你的主机IP]:3000
    

    替换[你的主机IP]为实际的主机局域网IP(比如192.168.1.100)。这个配置会强制Auth.js使用指定的IP地址生成回调URL,和Discord后台的配置保持一致。

  • 确认Discord后台的重定向URI配置
    登录Discord开发者平台,进入你的应用→OAuth2→Redirects,确保已添加:

    http://[你的主机IP]:3000/api/auth/callback/discord
    

    检查端口、路径是否完全正确,注意开发环境使用http而非https。

  • 重启开发服务器
    修改环境变量后,必须重启Next.js开发服务器,确保新的配置生效。

  • 验证测试
    用主机IP地址访问应用,再次尝试Discord登录流程,确认授权后能正常回调并完成登录。

补充说明

当你用localhost访问时正常,是因为Auth.js默认的NEXTAUTH_URL就是http://localhost:3000,而你大概率已经在Discord后台配置了这个地址的重定向URI,所以匹配成功。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 00:22:15