使用 Django Allauth

對於我的所有專案,Django-Allauth 仍然是一個易於設定的專案,開箱即用,包括但不限於:

  • 大約 50 多個社交網路身份驗證
  • 混合本地和社交帳戶的註冊
  • 多個社交帳戶
  • 社交帳戶的可選即時註冊 - 沒有問題
  • 電子郵件地址管理(多個電子郵件地址,設定主要)
  • 密碼忘記流程電子郵件地址驗證流程

如果你有興趣親自動手,Django-Allauth 可以通過其他配置來調整流程和使用你的身份驗證系統。

以下步驟假設你使用的是 Django 1.10+

設定步驟:

pip install django-allauth

在你的 settings.py 檔案中,進行以下更改:

# Specify the context processors as follows:
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                # Already defined Django-related contexts here

                # `allauth` needs this from django. It is there by default,
                # unless you've devilishly taken it away.
                'django.template.context_processors.request',
            ],
        },
    },
]

AUTHENTICATION_BACKENDS = (
    # Needed to login by username in Django admin, regardless of `allauth`
    'django.contrib.auth.backends.ModelBackend',

    # `allauth` specific authentication methods, such as login by e-mail
    'allauth.account.auth_backends.AuthenticationBackend',
)

INSTALLED_APPS = (
# Up here is all your default installed apps from Django

# The following apps are required:
'django.contrib.auth',
'django.contrib.sites',

'allauth',
'allauth.account',
'allauth.socialaccount',

# include the providers you want to enable:
'allauth.socialaccount.providers.google',
'allauth.socialaccount.providers.facebook',
)

# Don't forget this little dude.
SITE_ID = 1

完成上面 settings.py 檔案的更改後,轉到 urls.py 檔案。它可以是你的 yourapp/urls.py 或你的 ProjectName/urls.py。通常,我更喜歡 ProjectName/urls.py

urlpatterns = [
    # other urls here
    url(r'^accounts/', include('allauth.urls')),
    # other urls here
]

只需新增 include('allauth.urls'),即可免費獲得這些網址:

^accounts/ ^ ^signup/$ [name='account_signup']
^accounts/ ^ ^login/$ [name='account_login']
^accounts/ ^ ^logout/$ [name='account_logout']
^accounts/ ^ ^password/change/$ [name='account_change_password']
^accounts/ ^ ^password/set/$ [name='account_set_password']
^accounts/ ^ ^inactive/$ [name='account_inactive']
^accounts/ ^ ^email/$ [name='account_email']
^accounts/ ^ ^confirm-email/$ [name='account_email_verification_sent']
^accounts/ ^ ^confirm-email/(?P<key>[-:\w]+)/$ [name='account_confirm_email']
^accounts/ ^ ^password/reset/$ [name='account_reset_password']
^accounts/ ^ ^password/reset/done/$ [name='account_reset_password_done']
^accounts/ ^ ^password/reset/key/(?P<uidb36>[0-9A-Za-z]+)-(?P<key>.+)/$ [name='account_reset_password_from_key']
^accounts/ ^ ^password/reset/key/done/$ [name='account_reset_password_from_key_done']
^accounts/ ^social/
^accounts/ ^google/
^accounts/ ^twitter/
^accounts/ ^facebook/
^accounts/ ^facebook/login/token/$ [name='facebook_login_by_token']

最後,使用 python ./manage.py migrate 將 Django-allauth 遷移到資料庫中。

像往常一樣,為了能夠使用你新增的任何社交網路登入你的應用,你必須新增網路的社交帳戶詳細資訊。

登入 Django Admin(localhost:8000/admin)並在 Social Applications 下新增你的社交帳戶詳細資訊。

你可能需要每個身份驗證提供程式的帳戶才能獲取要填寫社交應用程式部分的詳細資訊。

有關你可以擁有和調整的詳細配置,請參閱“ 配置”頁面