谷歌OAuth 2错误400:redirect_uri_mismatch,但重定向URI符合要求且已在谷歌云控制台注册。

8
我正在使用next-auth和Google Oauth 2作为身份验证提供程序开发NextJS应用程序。生产环境构建正在Heroku上运行。在尝试在我的生产构建上登录时,Google OAuth会给我一个"Error 400: redirect_uri_mismatch"错误。通常情况下,这很容易修复,但确切的uri已经在Cloud Console中注册。请注意保留HTML标签。

See my cloud console config.

我也尝试了许多不同的uri排列组合,但这并没有帮助。 1148527169151061不能解决此问题。 问题错误: 错误400:redirect_uri_mismatch
您无法登录此应用程序,因为它不符合Google的OAuth 2.0策略。
如果您是应用程序开发人员,请在Google Cloud控制台中注册重定向URI。
请求详细信息 如果您是应用程序开发人员,请确保这些请求详细信息符合Google政策。 redirect_uri: https://middcourses2.herokuapp.com/api/auth/callback/google

Image of error page

这里是GCP授权域名列表的链接。


您的应用使用的回调URI为 callbackUrl=https://middcourses2.herokuapp.com,该URI与Google Cloud Console授权重定向URI不匹配。 - John Hanley
谢谢@JohnHanley,我该如何解决这个问题?我没有看到有关oauth2回调URI的任何文档。 - Nicholas Sliter
@DaImTo,谢谢,我可以使用检查元素确认没有末尾斜杠。 - Nicholas Sliter
你应该能够使用错误消息窗口上的滚动条,以查看Google没有说有尾随斜杠。重定向URI需要完全匹配。那么你授权的域名呢?你是否已经授权了该域名? - Linda Lawton - DaImTo
我的最后一个猜测是检查一下您在Google开发者控制台中注册的末尾是否有空格。如果不是这个问题,那么我就不知道了。 - Linda Lawton - DaImTo
显示剩余6条评论
4个回答

6

对我来说,clientID不是问题,但这是由于尾随斜杠(/)引起的。

redirect_uri必须完全匹配在开发者控制台上。

在Google Cloud控制台中,我在重定向URI列表中有http://localhost:8080,而我的代码在进行oAuth调用时发送http://localhost:8080/


你如何设置redirect_uri? - NroGamerz
1
@NroGamerz 谷歌云控制台 -> API和服务 -> 凭据 -> + 创建凭据 -> Oauth客户端ID -> Web应用程序 -> 授权重定向URI -> 添加URI - Eric

3

问题已解决!由于某些原因,谷歌在我已经设置好环境变量后更改了我的客户端ID和客户端密钥。一旦我注意到这个更改并输入新的值,它就正常工作了。


嘿,伙计,我遇到了和你一模一样的错误,请看看我的详细问题:https://dev59.com/EmfptIgBPY-HTNNjN6AZ - NroGamerz

1
我遇到了同样的错误, 在我的情况下,
NEXTAUTH_URL= 'http://localhost:3000' //my origin url

在 .env 文件中是这样的
NEXTAUTH_URL= 'http://localhost:300'  //my origin url

它是300而不是3000,所以请确保URL与原始的一样。

1

我也遇到了同样的问题,但是如果你使用 next-auth 进行身份验证,你应该在你的授权重定向 URI 中添加 http://localhost:3000/api/auth/callback/google,详见 https://next-auth.js.org/getting-started/rest-api#get-apiauthcallbackprovider 获取更多信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接