Добавить вход Twitter в приложение Django

Аутентификация пользователя является важным компонентом процесса разработки программного обеспечения. Кроме того, это важно и первое, о чем вы думаете, прежде чем разрабатывать любую другую часть приложения.
Чтобы сэкономить время и ресурсы, рекомендуется изучить доступные сторонние варианты. Большинство популярных сайтов используют социальную аутентификацию для аутентификации своих пользователей.

Что такое социальная аутентификация

Социальная аутентификация — это форма единого входа, при которой информация из социальных сетей аутентифицирует пользователей. Примеры включают:

  • Вход через Google
  • Гитхаб Войти
  • Логин в фейсбук
  • Твиттер
  • Вход в LinkedIn
  • Войти с помощью Майкрософт
  • Войти через Apple

Например, Udacity использует вход через Google и Facebook для аутентификации своих пользователей.

Преимущества социальной аутентификации

  • Нет необходимости настраивать систему аутентификации с нуля
  • Обеспечивает повышенную безопасность, поскольку большинство этих провайдеров используют системы высокого уровня для предотвращения несанкционированного доступа.
  • пользователям не нужно запоминать данные для входа; следовательно, беспроблемный процесс доступа к сайтам.

Недостатки социальной аутентификации

  • Если поставщик услуг отключится, пользователи не смогут аутентифицироваться в вашем приложении.

В этом руководстве вы узнаете, как добавить вход через Twitter в ваше приложение Django.

Джанго Аллаут

Django Allauth — это интегрированный набор приложений Django, предназначенных для аутентификации, регистрации, управления учетными записями, а также аутентификации сторонних (социальных) учетных записей.

Django Allauth стремится предложить полностью интегрированное приложение для аутентификации, которое позволяет выполнять как локальную, так и социальную аутентификацию, с потоками, которые просто работают. Он также поддерживает большинство популярных и не очень популярных провайдеров.

Предпосылки

Прежде чем приступить к работе с Django Allauth, у вас должно быть следующее

  • Python 3.5, 3.6, 3.7, 3.8 или 3.9
  • Джанго (2.0+)
  • python-openid или python3-openid (в зависимости от вашей версии Python)
  • запросы и запросы-oauthlib

Настройте проект Django

Всегда рекомендуется создавать виртуальную среду для каждого проекта Python, за который вы беретесь; это помогает отделить зависимости и версии проекта от других проектов.
Создайте виртуальную среду внутри каталога вашего проекта.

mkdir django_auth
cd django_auth
python3.8 -m venv env

Создайте новый проект Django.

django-admin.py startproject django_auth .

Активируйте виртуальную среду и установите Django в виртуальной среде.

source .env/bin/activate
pip install Django

Затем установите Django_auth,

pip install django-allauth

Перейдите к settings. py и добавьте следующие приложения в список INSTALLED_APPS:

Затем добавьте all auth в качестве серверной части аутентификации в файл settings.py. Установка этой функции разрешает аутентификацию по электронной почте.

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',
    ...
]

Добавьте идентификатор сайта.

SITE_ID = 1

Обновите файл urls.py следующим образом:

from django.conf.urls import url,include
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url("accounts/", include("allauth.urls")), # add this
]

Запустите миграцию, чтобы создать таблицы базы данных.

python3.8 manage.py migrate

Создайте суперпользователя.

python3.8 manage.py createsuperuser

Войдите в систему администратора по адресу http://127.0.0.1:8000/admin, используя созданного выше суперпользователя.

Как вы можете видеть выше, в административном интерфейсе Django отображается опция СОЦИАЛЬНЫЕ АККАУНТЫ, где вы можете добавить любую социальную сеть, которую хотите использовать в своем приложении.
Когда вы нажмете на маркеры социальных приложений, вы должны увидеть интерфейс, показанный ниже.

Каждый поставщик аутентификации предоставляет уникальный идентификатор приложения и токены, используемые для идентификации вашего приложения. Вы получите эти учетные данные из Twitter API.

Твиттер-провайдер

Чтобы использовать Twitter в нашем приложении Django, нам нужно зарегистрироваться в клиенте API и получить идентификатор клиента и секрет API. Перейдите на портал разработчиков Twitter по адресу https://developer.twitter.com и авторизуйте свою учетную запись Twitter.

Создайте имя приложения.

Перейдите к получению ключей на следующей странице.

Запишите ключи API и сохраните их в безопасности.
Перейдите на панель инструментов приложения и включите аутентификацию. OAuth 2.0 и OAuth 1.0a — это методы аутентификации, которые позволяют пользователям входить в ваше приложение с помощью Twitter.

Тем не менее, на странице аутентификации добавьте URL-адрес обратного вызова для целей разработки и сохраните изменения.

Теперь вернитесь в интерфейс администратора Django и нажмите «Добавить социальное приложение». Заполните следующие данные:

  • Провайдер: Твиттер
  • Имя
  • ID клиента:
  • Секретный ключ:
  • Доступные сайты

Создайте домашнюю страницу

Интеграция Django Allauth завершена; давайте добавим функцию входа в систему на домашней странице нашего приложения. Создайте каталог шаблонов в корневом каталоге и добавьте файл home.html

mkdir templates 
cd templates
touch home.html

Добавьте следующий код в home.html.

В приведенном выше коде мы проверяем, прошел ли пользователь аутентификацию. Если пользователь аутентифицирован, мы показываем его имя пользователя. Если вы не прошли аутентификацию, мы предоставляем ссылку для входа в Твиттер.

Зарегистрируйте свои шаблоны в файле settings.py, чтобы Django знал, откуда их загружать.
В разделе ШАБЛОНЫ добавьте эту строку.

TEMPLATES = [{
...
"DIRS": [str(BASE_DIR.joinpath("templates"))], #update this
...
],},},]

Создать вид и URL

Последний шаг — создать представление, которое будет отображать страницу login.html page. В views.py добавьте следующую функцию.

from django.shortcuts import render
def Home(request):
    return render(request,'home.html')

Обновите файл url.py, указав путь к представлению.

В home.html мы просто показываем кнопку «Войти через Twitter», и когда вы нажимаете на кнопку, вы перенаправляетесь на страницу входа, предоставленную Django_auth.

Заключение

В этом руководстве показано, как начать работу с добавлением входа через социальные сети в приложение Django. Другие поставщики услуг будут следовать тем же критериям, которые использовались выше.

Больше контента на plainenglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Получите эксклюзивный доступ к возможностям написания и советам в нашем сообществе Discord.