2

我想谷歌認證添加到我的項目如何僅在谷歌上使用python-social-auth?

我安裝了它:

pip install python-social-auth 

和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', 
) 

至於SOCIAL_AUTH_GOOGLE_OAUTH2_KEY和secert,我去https://console.developers.google.com/apis/credentials,並使用本地主機url創建它們(用於測試)

我在templ中調用它吃這樣的:

<a href="{% url 'social:begin' 'google-oauth2' %}"> login </a> 

但我得到這個錯誤:

Backend not found

我到底做錯了什麼?

下一步,我想確保只有我驗證的用戶才能驗證不是任何人使用Google帳戶,如何操作?

回答

0

在你setting.py

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

SOCIAL_AUTH_LOGIN_REDIRECT_URL = '/' 

context處理器

'context_processors': [ 
       ... 
       'social.apps.django_app.context_processors.backends', 
       'social.apps.django_app.context_processors.login_redirect', 
      ], 

urls.py

urlpatterns = [ 
... 
url('social/', include('social.apps.django_app.urls', namespace='social')), 
... 
] 

添加到模板中。

<p><a class="btn btn-lg btn-danger btn-block" href="{% url 'social:begin' 'google-oauth2' %}">Entrar con la cuenta de Google</a></p> 
+0

這就是我正在做的事情,因爲我張貼!有什麼不同?我應該糾正什麼? – cinoch