谷歌OAuth2集成错误400:redirect_uri_mismatch

5
我在提供正确的重定向URI后仍然遇到了Error 400: redirect_uri_mismatch错误。您可以查看下面的图像作为参考。它适用于我的本地主机,但对于我的服务器显示此错误。我的域名类似于https://xxx.topLevelDomain.com。在浏览了大多数与此错误相关的问题后,我无法找到可能导致此问题的原因。尽管我猜测问题可能是因为我在这里使用了子域,但仍不确定是否是问题。
应用程序信息:
  • 前端是基于React托管在https://someTopLevelDomain.com
  • 后端是基于Spring Boot托管在https://someSubdomain.someTopLevelDomain.com

enter image description here

enter image description here

3个回答

16

您的应用程序正在以http方式发送到.com域名。

在此输入图片描述

在Google开发者控制台中,您只列出了一个HTTP域,即localhost。

在此输入图片描述

您发送的重定向URI必须完全匹配您在Google Cloud控制台中添加的重定向URI之一。

要了解如何正确设置重定向URI,请查看Google OAuth2:如何修复redirect_uri_mismatch错误。第2部分服务器端Web应用程序。

重定向URI来自哪里

根据编程语言、IDE和客户端库的不同,您可能正在使用将定义应用程序从中调用的重定向URI。

例如,我知道Visual Studio喜欢使用C#随机端口。我不能告诉您是什么生成了您的重定向URI,我只能告诉您:

需要将以下内容添加到您的Google Cloud控制台中。

http://________.com/login/oauth2/code/Google   

或者您需要找出是什么在设置请求的主机,并将其设置为使用https,以便您可以使用现有的那个。

https://________.com/login/oauth2/code/Google   

我在redirect_uri中添加了一个https和http域名,其中http是本地主机,可以正常工作,而https是子域名,却无法正常工作。我不明白为什么谷歌警告中显示我的应用程序是https,但警告却是http。 - Anurag
1
是的,但您的应用程序似乎正在从 http ://.com/login/oauth2/code/Google 发送,这意味着您需要添加 http ://.com/login/oauth2/code/Google。现在您只添加了 https ://________.com/login/oauth2/code/Google。您的应用程序、IDE 或客户端库正在生成重定向 URI。您只需要添加 Google 开发人员控制台中告诉您要使用的重定向 URI 即可。(注意,在冒号前添加一个空格,否则 SO 将无法呈现该字符串) - Linda Lawton - DaImTo
1
明白了。非常感谢。 - Anurag
1
@DaImTo,你不能在“生产环境”中使用http协议来进行Google OAuth。 - Jim
没错,你也不能使用本地主机名,必须是你已经注册的域名。 - Linda Lawton - DaImTo

0
将 https 改为 http。

授权重定向 URI

http://someTopLevelDomain.com/api/auth/google/callback

0
问题出在quickstart.py文件的flow.run_local_server(port=0)这一行。
port=0时,操作系统会动态分配一个可用的端口号,这在默认端口已被其他进程占用的情况下非常有用。所以你需要将其改为例如flow.run_local_server(port=8000)并在凭据页面注册。
我只是引用了这里的答案:https://dev59.com/3o3da4cB1Zd3GeqPtwLO#75679246

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