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

Next.js部署Amplify后Discord OAuth2回调Query参数为空问题

解决Next.js Discord OAuth2在Amplify生产环境中req.query为空的问题

可能的原因及修复步骤

1. 检查Amplify的重定向/重写规则

Amplify默认的SPA重定向规则容易丢失查询参数,你需要确保规则保留querystring:

  • 登录Amplify控制台,进入应用 → App settings → Rewrites and redirects
  • 找到指向/index.html的默认重定向规则,修改Query string为Include
  • 若手动编辑amplify.yml,确保重写规则包含querystring: 'include',示例:
rewrites:
  - source: '</^[^.]+$|\.(?!(css|gif|ico|jpg|js|png|txt|svg|woff|ttf|map|json)$)([^.]+$)/>'
    target: '/index.html'
    status: 200
    querystring: 'include'

2. 验证Discord重定向URI的一致性

确保Discord开发者平台配置的重定向URI和Amplify生产地址完全匹配:

  • 检查末尾斜杠差异(比如https://xxx.amplifyapp.com/api/verify-account vs 带斜杠的版本)
  • 确认是否包含www(Amplify URL带www的话,Discord配置也要对应)
  • 本地和生产环境的重定向URI要分开配置,不能混用

3. 确认Next.js部署模式

如果用了静态导出(next export),API路由无法被服务器端处理,会导致参数丢失:

  • 在amplify.yml中,构建命令要使用npm run build而非npm run export
  • 确保Amplify部署配置启用了SSR支持

4. 清除Amplify缓存

旧缓存可能导致路由配置不生效:

  • 在Amplify控制台重新部署应用,触发完整构建流程
  • 测试前清除浏览器缓存

额外调试建议

修改接口代码打印完整请求URL,确认Discord是否真的传递了code参数:

const discordLink = async (req: NextApiRequest, res: NextApiResponse) => {
  console.log("Full request URL:", req.url);
  console.log("Query params:", req.query);
  // 其他逻辑
}

通过CloudWatch日志查看输出,可判断是参数未传递还是Amplify未解析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 05:31:35