Якщо ви працюєте на вашому сайті з різними користувачами (а скоріше за все так воно і є чи скоро буде), то вам треба механізм автентифікації користувачів.
Зазвичай, треба довго шукати що і як треба налаштовувати, продумати всі посилання, кнопки і т.д.
У статті пропоную попроковий спосіб, як це зробити максимально швидко.
pip install python-social-auth==0.2.12Версія могла змінитись з часу написання статті.
SOCIAL_AUTH_FACEBOOK_KEY = "< App ID >"До змінної INSTALLED_APPS додаємо рядок:
SOCIAL_AUTH_FACEBOOK_SECRET = "< App Secret >"
SOCIAL_AUTH_FACEBOOK_SCOPE = ['email']
SOCIAL_AUTH_VK_OAUTH2_KEY = '< App Key >'
SOCIAL_AUTH_VK_OAUTH2_SECRET = '< App Secret >'
SOCIAL_AUTH_VK_OAUTH2_SCOPE = ['email']
SOCIAL_AUTH_GOOGLE_OAUTH2_KEY = '< App Key >' SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET = '< App Secret >' SOCIAL_AUTH_GOOGLE_OAUTH2_USE_DEPRECATED_API = True SOCIAL_AUTH_GOOGLE_PLUS_USE_DEPRECATED_API = True
'social.apps.django_app.default',До змінної TEMPLATE_CONTEXT_PROCESSORS додаємо:
'social.apps.django_app.context_processors.backends',Додаємо змінну AUTHENTICATION_BACKENDS:
'social.apps.django_app.context_processors.login_redirect',
AUTHENTICATION_BACKENDS = (Також в налаштуваннях можна вказати посилання для успішної та неуспішної авторизації:
'social.backends.facebook.FacebookOAuth2',
'social.backends.vk.VKOAuth2',
'social.backends.google.GoogleOAuth2',
'django.contrib.auth.backends.ModelBackend',
)
LOGIN_REDIRECT_URL = '/'
SOCIAL_AUTH_LOGIN_ERROR_URL = '/'
url('', include('social.apps.django_app.urls', namespace='social')),
url('', include('django.contrib.auth.urls', namespace='auth')),
Якщо треба вказати ще якісь додаткові параметри, наприклад сторінку яку хотів відкрити користувач перед переадресацією, чи будь-яку службову інформацію, то просто додайте до посилання (в атрибут href):
Після того як користувач натисне це посилання, він буде переадресований на Facebook і якщо погодиться надати вам дані, то буде переадресований за посиланням, яке ви вказали в налаштуваннях додатку та з параметрами, якщо були додані.?next=some_page&foo=bar&spam=eggs
from django.contrib.auth.decorators import login_required
{{ request.user.username }}