Google OAuth2 重定向 URI 不匹配问题

8 投票
2 回答
4809 浏览
提问于 2025-04-18 04:22

大家好,

我在尝试通过谷歌进行身份验证时遇到了一个400的错误,提示“redirect_url_mismatch”。我是在一个Django应用中使用python-social-auth来实现这个过程的。

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

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

"请求中的重定向URI: http://localhost:8000/something/complete/google-oauth2/ 与注册的重定向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的截图。

在这里输入图片描述

我哪里做错了呢?

谢谢!

2 个回答

3

确保你在urls.py文件中添加了social-auth,像这样:

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

然后在console.developers.google.com网站上,把授权重定向URI设置为http://localhost:8000/something/complete/google-oauth2/

4

这里有一点需要注意,就是重定向的URL必须完全一致,包括最后的斜杠。在我的例子中,它是这样的:http://localhot:8000/something/complete/google-oauth2。其实应该是
http://localhot:8000/something/complete/google-oauth2/。这样就导致了重定向的URL不匹配。

另外,在控制台中为重定向的URL定义http:和https:,因为社交认证生成的重定向URL仍然会发送http,而不管你服务器的SSL设置如何。

撰写回答