[英]How to sign in with the Google+ API using Django?
我如何才能在我的Django網站上添加Google+ API登錄?
首先,您必須為Google+創建OAuth憑據。
現在讓我們將python-social-auth
添加到您的Django應用程序中。
pip
安裝python-social-auth
設置適當的Django設置:
'social.apps.django_app.default'
添加到INSTALLED_APPS
: SOCIAL_AUTH_GOOGLE_OAUTH2_KEY
和SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET
設置。 客戶端密鑰是Google開發人員控制台中“憑據”屏幕中列出的“客戶端ID”,以“.apps.googleusercontent.com”結尾。 只在點之前取得部分。 該秘密被列為“客戶機密”。 確保明確定義了AUTHENTICATION_BACKENDS
設置,並且它包含'social.backends.google.GoogleOAuth2'
。 一個例子是:
AUTHENTICATION_BACKENDS = ( 'social.backends.google.GoogleOAuth2', 'django.contrib.auth.backends.ModelBackend')
按照python-social-auth文檔中的詳細說明定義SOCIAL_AUTH_PIPELINE
設置。 該頁面中列出了每個設置的功能。
如果您與從Google+獲得的信息有關,我建議您定義一項功能:
def save_profile(backend, user, response, *args, **kwargs): if backend.name == "google-oauth2": # do something
其中user
是django.contrib.auth.models.User
對象,而response
是字典。 然后在create_user
之后使用完整模塊路徑將該函數添加到SOCIAL_AUTH_PIPELINE
。
如果您不想對該信息執行任何操作,則可以按原樣保留默認管道。
最后,您需要將python-social-auth
urls添加到您網站的urlpatterns
:
from django.conf.urls import include
url("^soc/", include("social.apps.django_app.urls", namespace="social"))
這應該做到! 是時候進行測試了。 首先, ./manage.py makemigrations
為所需的遷移python-social-auth
,然后./manage.py migrate
,如解釋在這里 。 然后,您可以運行開發服務器,然后轉到http:// localhost:8000 / soc / login / google-oauth2 /?next = / 。
@rhaps0dy的回答是正確的,但python-social-auth
現已棄用並遷移為social-auth-app-django
。 所以這就是我與@rhaps0dy指南的不同之處。
python-social-auth
,我安裝了social-auth-app-django
, 'social.apps.django_app.default'
成為'social_django'
'social.backends.google.GoogleOAuth2'
現在是'social_core.backends.google.GoogleOAuth2'
url("^soc/", include("social.apps.django_app.urls", namespace="social"))
成為url("^soc/", include("social_django.urls", namespace="social"))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.