我正在nextjs中实现discord oauth2,当我部署到amplify时遇到了问题,它在我的localhost中工作正常,但在生产中失败,我的实现在配置文件页面中看起来像这样,以便有人链接他们的discord帐户
<a className="text-indigo-800" href={`https://discord.com/api/oauth2/authorize?client_id=${NEXT_PUBLIC_DISCORD_API_ID}&redirect_uri=${NEXT_PUBLIC_DISCORD_REDIRECT_URI}&response_type=code&scope=identify`}>
{" "}{userData.discordUsername || 'Link account'}
</a>
这将创建一个链接,用户可以单击该链接,然后将其带到discord进行身份验证,直到一切正常为止,现在当discord重定向到/api/verify-acount
时,问题出现了
它看起来像这样
const discordLink = async (req: NextApiRequest, res: NextApiResponse) => {
console.log("query", req.query);
}
正如您所看到的,我最终知道错误就在这里,因为我记录了req.query,它在localhost中返回一个对象,其中包含用户query { code: 'somecode' }
的代码,但在amplify中,在转到Couldwatch以查看日志之后,该对象为空
这最终会把一切都搞砸,因为代码不可用于验证和获取用户详细信息以存储在数据库中。
但我不知道是什么导致了这个错误。
我希望有人有想法,并愿意帮助谢谢
1条答案
按热度按时间8fsztsew1#
这个问题实际上很奇怪,我仍然不明白为什么会发生这种情况
但我的重定向域是
https://subdomain.domain.zyx
,它放大接受并重定向请求到https://www.subdomain.domain.zyx
,这是浏览器中接受的链接(用户将始终看到这一点,即使他们输入第一个URL),因为解释的场景(其中一个没有www前缀)因此,我请求从
https://www.subdomain.domain.zyx
链接discord,discord将重定向到https://subdomain.domain.zyx
,AWS将重定向到https://www.subdomain.domain.zyx
,因此,我仍然不明白的是,在这些步骤中,查询参数在哪里丢失,但在将discord中的重定向URL更改为https://www.subdomain.domain.zyx
后,现在一切正常