如何仅与谷歌一起使用 python-social-auth ?

cin*_*och 5 django google-authentication django-1.6 python-social-auth

我正在尝试将谷歌身份验证添加到我的项目中

我安装了它:

pip install python-social-auth
Run Code Online (Sandbox Code Playgroud)

并将其添加到settings.py中:

SOCIAL_AUTH_USER_MODEL = 'accounts.CustomUser'##

SOUTH_MIGRATION_MODULES = {
    'default': 'social.apps.django_app.default.south_migrations'
    }

AUTHENTICATION_BACKENDS = (
    'myproject.middleware.AuthenticationCMSBackend',##
    'social.backends.google.GoogleOpenId',
    'social.backends.google.GoogleOAuth2',
    'django.contrib.auth.backends.ModelBackend',
)

LOGIN_REDIRECT_URL = '/'

SOCIAL_AUTH_GOOGLE_OAUTH2_KEY  = '507847...m.apps.googleusercontent.com'
SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET = 'SEt-6...0j3'"""

TEMPLATE_CONTEXT_PROCESSORS =  (
    ...
    'django.core.context_processors.request',
    'social.apps.django_app.context_processors.backends',
    'social.apps.django_app.context_processors.login_redirect',
)
Run Code Online (Sandbox Code Playgroud)

至于 SOCIAL_AUTH_GOOGLE_OAUTH2_KEY 和 secert,我访问https://console.developers.google.com/apis/credentials并使用 localhost url 创建它们(目前用于测试)

我在模板中这样称呼它:

<a href="{% url 'social:begin' 'google-oauth2' %}"> login </a>
Run Code Online (Sandbox Code Playgroud)

但我收到这个错误:

找不到后端

我究竟做错了什么?

下一步,我想确保只有我验证的用户才能验证任何拥有谷歌帐户的人,该怎么做?

era*_*uan 0

在你的设置.py

AUTHENTICATION_BACKENDS = (
 # Google
 'social_core.backends.google.GoogleOAuth2',
 # Django
 #'django.contrib.auth.backends.ModelBackend',
)
# Google Keys
SOCIAL_AUTH_GOOGLE_OAUTH2_KEY = 'KEY' # Client ID
SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET = 'SECRET_' # Client secret

SOCIAL_AUTH_LOGIN_REDIRECT_URL = '/'
Run Code Online (Sandbox Code Playgroud)

上下文处理器

'context_processors': [
                ...
                'social.apps.django_app.context_processors.backends',
                'social.apps.django_app.context_processors.login_redirect',
            ],
Run Code Online (Sandbox Code Playgroud)

urls.py

urlpatterns = [
...
url('social/', include('social.apps.django_app.urls', namespace='social')),
...
]
Run Code Online (Sandbox Code Playgroud)

在你的模板中添加。

<p><a class="btn btn-lg btn-danger btn-block" href="{% url 'social:begin' 'google-oauth2' %}">Entrar con la cuenta de Google</a></p>
Run Code Online (Sandbox Code Playgroud)