Добавить вход 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.