Google OAuth2 redirect_uri_mismatch 问题

Posted

技术标签:

【中文标题】Google OAuth2 redirect_uri_mismatch 问题【英文标题】:Google OAuth2 redirect_uri_mismatch Issue 【发布时间】:2014-06-12 09:09:05 【问题描述】:

全部,

我在尝试通过 google 进行身份验证时收到 400 redirect_url_mismatch 错误。我正在通过 django 应用程序使用 python-socal-auth 来实现这个过程。

一切都很顺利,直到我遇到了 redirect_uri_mismatch 问题的过程的最后阶段。

在谷歌上,我收到了这条消息。

"The redirect URI in the request: http://localhost:8000/something/complete/google-oauth2/ did not match a registered redirect URI"

`Request Details
from_login=1
scope=https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile
response_type=code
redirect_uri=http://localhost:8000/something/complete/google-oauth2/
state=qT1RLLMa72F8NxFFubHwCVe3GgLDNcgZ
as=-55f896f3314b21af
pli=1
client_id=160177117398
authuser=0
hl=en`

下面是客户端 ID 重定向 URI 的屏幕截图。

我做错了什么?

谢谢!

【问题讨论】:

【参考方案1】:

这里要注意的一点是,在最后一个斜杠之前,重定向 url 应该完全相同。就我而言,就像http://localhot:8000/something/complete/google-oauth2 这应该是http://localhot:8000/something/complete/google-oauth2/ 这导致了 redirect_uri_mismatch。

还要在控制台中为重定向 url 定义 http: 和 https:,因为无论服务器中的 ssl 设置如何,由社交身份验证生成的重定向 url 仍会发送 http。

【讨论】:

【参考方案2】:

确保您在 urls.py 中添加了 social-auth

url('', include('social.apps.django_app.urls', namespace='social')),

在 console.developers.google.com 上将 Authorized redirect URIs 设置为 http://localhost:8000/something/complete/google-oauth2/

【讨论】:

谢谢,google-oauth2/ 上的最后一个 / 是我所缺少的。

以上是关于Google OAuth2 redirect_uri_mismatch 问题的主要内容,如果未能解决你的问题,请参考以下文章

Vaadin 21 Flow + Spring Security OAuth2:找不到'oauth2/authorization/google'的路由

如何将 Google Services oAuth2 转换为 Google Ads API oAuth2 访问权限

如何获取经过 Google 身份验证的用户(oauth2)的 Google 聊天(环聊)ID?

Spring 5,401 返回后带有 Google 刷新访问令牌的 OAuth2

Rest,Spring 拥有 OAuth2 服务器 + OAuth2 提供商,如 Facebook、Google、Yahoo

Google oAuth2 令牌越来越失效