next.js 不一致的Oauth2 API请求返回空查询参数

0pizxfdo  于 2022-12-12  发布在  其他
关注(0)|答案(1)|浏览(121)

我正在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以查看日志之后,该对象为空

这最终会把一切都搞砸,因为代码不可用于验证和获取用户详细信息以存储在数据库中。
但我不知道是什么导致了这个错误。
我希望有人有想法,并愿意帮助谢谢

8fsztsew

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后,现在一切正常

相关问题