簡體   English   中英

如何使用Django使用Google+ API登錄?

[英]How to sign in with the Google+ API using Django?

我如何才能在我的Django網站上添加Google+ API登錄?

首先,您必須為Google+創建OAuth憑據。

  1. 轉到Google Developer Console
  2. 創建一個新項目。
  3. 轉到“API和身份驗證” - >“授權屏幕”,並為您的產品命名。 點擊“保存”。
  4. 轉到“API和身份驗證” - >“憑據”。 在“OAuth”下,點擊“創建新客戶ID”。 添加“ http:// localhost:8000 / soc / complete / google-oauth2 / ”應列為回調URL。 這僅適用於測試,請確保在生產時放入您的實際域。

現在讓我們將python-social-auth添加到您的Django應用程序中。

  1. pip安裝python-social-auth
  2. 設置適當的Django設置:

    • 'social.apps.django_app.default'添加到INSTALLED_APPS
    • 使用您之前創建的客戶端密鑰和機密添加SOCIAL_AUTH_GOOGLE_OAUTH2_KEYSOCIAL_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 

    其中userdjango.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指南的不同之處。

  1. 而不是python-social-auth ,我安裝了social-auth-app-django
  2. 'social.apps.django_app.default'成為'social_django'
  3. 'social.backends.google.GoogleOAuth2'現在是'social_core.backends.google.GoogleOAuth2'
  4. 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM