我正在使用 django-rest-framework 和social-django 将 Google OAuth2 集成到我的 Django REST Framework 项目中。但是,当我尝试使用端点进行身份验证时:
GET /api/o/google-oauth2/?redirect_uri=http://localhost:3000/auth/google
我收到以下错误:
social_core.exceptions.MissingBackend:缺少后端“google-oauth2”条目
什么可能导致缺少后端“google-oauth2”条目错误?我是否缺少任何配置,或者库版本是否存在问题?任何帮助或指导将不胜感激。
将以下内容添加到我的settings.py中:
AUTHENTICAION_BACKEN,DS =[
'django.contrib.auth.backends.ModelBackend',
'social_core.backends.google.GoogleOAuth2',
'social_core.backends.facebook.FacebookOAuth2',
]
SOCIAL_AUTH_GOOGLE_OAUTH2_SCOPE = [
'openid',
'https://www.googleapis.com/auth/userinfo.email',
'https://www.googleapis.com/auth/userinfo.profile',
]
redirect_uri (http://localhost:3000/auth/google) 与 Google API 控制台中注册的一致。
您遇到的错误 (
MissingBackend "google-oauth2" entry
) 似乎通常是由配置错误或设置中的拼写错误引起的。您可以检查以下几项来解决问题:
AUTHENTICATION_BACKENDS
设置中的拼写错误:您提供的设置名称中有一个拼写错误:
AUTHENTICAION_BACKEN,DS
。应该是AUTHENTICATION_BACKENDS
。仔细检查您的 settings.py
以确保使用正确的设置。
更正的设置:
AUTHENTICATION_BACKENDS = [
'django.contrib.auth.backends.ModelBackend',
'social_core.backends.google.GoogleOAuth2',
'social_core.backends.facebook.FacebookOAuth2',
]
SOCIAL_AUTH_GOOGLE_OAUTH2_KEY
和SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET
:确保您已在
settings.py
中正确配置 Google OAuth2 客户端 ID 和密钥:
SOCIAL_AUTH_GOOGLE_OAUTH2_KEY = 'your-client-id.apps.googleusercontent.com'
SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET = 'your-client-secret'
您需要将
'your-client-id'
和 'your-client-secret'
替换为 Google Developer Console 中的实际值。
social-auth-app-django
:确保您已安装所需的软件包
social-auth-app-django
:
pip install social-auth-app-django
INSTALLED_APPS
:确保
social_django
包含在您的 INSTALLED_APPS
中:
INSTALLED_APPS = [
# your other apps
'social_django',
]
确保在 Google API 控制台和 Django 项目中正确配置重定向 URI (
http://localhost:3000/auth/google
)。在某些情况下,Google API 可能不接受本地主机重定向,因此请确保它列在 Google 控制台中允许的重定向 URI 中。
settings.py
:AUTHENTICATION_BACKENDS = (
'django.contrib.auth.backends.ModelBackend',
'social_core.backends.google.GoogleOAuth2',
'social_core.backends.facebook.FacebookOAuth2',
)
SOCIAL_AUTH_GOOGLE_OAUTH2_KEY = 'your-client-id.apps.googleusercontent.com'
SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET = 'your-client-secret'
SOCIAL_AUTH_GOOGLE_OAUTH2_SCOPE = [
'openid',
'https://www.googleapis.com/auth/userinfo.email',
'https://www.googleapis.com/auth/userinfo.profile',
]
INSTALLED_APPS = [
# your other apps
'social_django',
]
完成这些更改后,请重试并查看问题是否解决。如果您仍然遇到问题,您可能需要检查
social-auth-app-django
和 social-core
的版本是否彼此兼容。
让我知道进展如何!