Django allauth 谷歌 OAuth redirect_uri_mismatch 错误

django谷歌

1个回答

写回答

姚丽娟

2025-06-27 13:45

+ 关注

Django
Django

Django allauth 谷歌 OAuth redirect_uri_mismatch 错误及解决方法

在使用Django进行网站开发时,我们可能会遇到集成第三方登录功能的需求。而Django allauth是一个非常方便的第三方登录库,可以帮助我们快速实现这一功能。然而,在使用Django allauth集成谷歌登录时,有时候会遇到"redirect_uri_mismatch"错误。本文将详细介绍这一错误的原因,并提供解决方案。

错误原因

"redirect_uri_mismatch"错误通常是由于谷歌登录API的回调URL与我们在Django allauth中配置的回调URL不匹配所致。当我们在谷歌开发者控制台创建OAuth客户端凭据时,需要提供一个回调URL,用于接收谷歌登录成功后的回调请求。而在Django allauth中,我们也需要配置一个回调URL,用于处理谷歌登录成功后的回调请求。如果这两个回调URL不一致,就会导致"redirect_uri_mismatch"错误的发生。

解决方案

要解决"redirect_uri_mismatch"错误,我们需要确保谷歌开发者控制台中的回调URL与Django allauth中的回调URL一致。下面是一个解决方案的示例代码:

首先,在谷歌开发者控制台中,创建一个OAuth客户端凭据,并提供正确的回调URL。例如,我们的网站URL是http://example.com,那么回调URL应设置为http://example.com/accounts/Google/login/callback/。

接下来,在Django项目的settings.py文件中,找到并修改以下配置项:

Python

SOCIALACCOUNT_PROVIDERS = {

'Google': {

'APP': {

'client_id': 'your_client_id',

'secret': 'your_secret_key',

'key': ''

},

'SCOPE': ['profile', 'emAIl'],

'AUTH_PARAMS': {'access_type': 'online'}

}

}

将"your_client_id"和"your_secret_key"替换为你在谷歌开发者控制台中获取的客户端ID和密钥。

最后,在Django项目的urls.py文件中,添加以下代码:

Python

from allauth.socialaccount.providers.Google.views import GoogleOAuth2Adapter

from allauth.socialaccount.providers.oauth2.client import OAuth2Client

urlpatterns = [

# ...其他URL配置...

url(r'^accounts/', include('allauth.urls')),

url(r'^accounts/Google/login/callback/$', GoogleOAuth2Adapter.as_view(client_id='your_client_id',

client_secret='your_secret_key',

redirect_uri='http://example.com/accounts/Google/login/callback/',

provider_id='Google'),

name='Google_login_callback'),

]

在上述代码中,将"your_client_id"和"your_secret_key"替换为你在谷歌开发者控制台中获取的客户端ID和密钥,并将回调URL设置为与谷歌开发者控制台中的回调URL一致。

通过以上步骤,我们可以解决Django allauth集成谷歌登录时可能出现的"redirect_uri_mismatch"错误。确保谷歌开发者控制台中的回调URL与Django allauth中的回调URL一致是解决这一问题的关键。希望本文能帮助到遇到类似问题的开发者们。

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号