social_core.exceptions.MissingBackend:使用 Google OAuth2 的 Django 中缺少后端“google-oauth2”条目

问题描述 投票:0回答:1

我正在使用 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 控制台中注册的一致。

django django-rest-framework django-socialauth djoser
1个回答
0
投票

您遇到的错误 (

MissingBackend "google-oauth2" entry
) 似乎通常是由配置错误或设置中的拼写错误引起的。您可以检查以下几项来解决问题:

1.
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',
]

2. 检查
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 中的实际值。

3. 确保已安装
social-auth-app-django

确保您已安装所需的软件包

social-auth-app-django
:

pip install social-auth-app-django

4. 检查
INSTALLED_APPS

确保

social_django
包含在您的
INSTALLED_APPS
中:

INSTALLED_APPS = [
    # your other apps
    'social_django',
]

5. 检查重定向 URI:

确保在 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
的版本是否彼此兼容。

让我知道进展如何!

© www.soinside.com 2019 - 2024. All rights reserved.