User social authentication with ulogin.ru service
Project description
django-ulogin
Django-ulogin является приложением для социальной аутентификации пользователей с помощью интернет-сервиса ULOGIN.RU
Требования
Python 2.6+
Django Framework v 1.2.5+
requests
Лицензия
Распространяется по лицензии MIT
Установка
Для установки django-ulogin в текущее окружение можно воспользоваться утилитой pip.
pip install django-ulogin
Откройте settings.py и добавьте в INSTALLED_APPS приложение django_ulogin
INSTALLED_APPS += ('django_ulogin', )
Откройте urls.py и добавьте схему URL:
urlpatterns += patterns('', url(r'^ulogin/', include('django_ulogin.urls')), )
Синхронизируйте базу данных
./manage.py syncdb
Использование
Для использования приложения достаточно в любом месте шаблона вставить подключение шаблонной библиотеки ulogin_tags и вызов тега ulogin_widget.
{% load ulogin_tags %} {% ulogin_widget }
На месте тега ulogin_widget при рендеринге появится код интеграции Вашего сайта ULOGIN.
Тонкая настройка
По умолчанию django_ulogin требует от сервиса только одно обязательное поле - email. Вы можете указать для проекта список как необходимых полей (определив в settings список ULOGIN_FIELDS), так и опциональных (ULOGIN_OPTIONAL):
# Поля first_name и last_name обязательны ULOGIN_FIELDS = ['first_name', 'last_name'] # Необязательные поля: пол, URL аватара, дата рождения ULOGIN_OPTIONAL = ['sex', 'photo', 'bdate']
Список всех полей, которые сообщает ULOGIN:
first_name
last_name
email
nickname
bdate (дата рождения, передаётся в формате dd.mm.yyyy)
sex (пол: 1 означает женский, 2 - мужской)
photo (аватар, размер 100х100 пикселей)
photo_big
city
country
Внешний вид виджета определяется параметром ULOGIN_DISPLAY. Доступно три варианта:
panel
small (по умолчанию)
button
Список используемых провайдеров определяется директивой ULOGIN_PROVIDERS. По умолчанию включены:
vkontakte
facebook
twitter
google
livejournal
Дополнительные провайдеры, которые будут показаны внутри выпадающего меню, определяются в директиве ULOGIN_HIDDEN. По умолчанию: - yandex - odnoklassniki - mailru - openid
Полный список поддерживаемых провайдеров можно уточнить на сайте http://ulogin.ru
Если при входе нужно выполнить какую-то JavaScript-функцию, укажите её в виде строки в переменной ULOGIN_CALLBACK.
Сигналы
При аутентификации пользователя создаётся новый Django-пользователь, username которого заполняется uuid4-хешем. Однако при создании новой аутентификации срабатывает сигнал django_ulogin.signals.assign, в котором передаётся объект request, пользователь Django, аутентификация и флаг того, была ли создана запись.
Чтобы сделать имя поля дружественным пользователю, достаточно создать объект, подписанный на сигннал django_ulogin.signals.assign:
def catch_ulogin_signal(*args, **kwargs): """ Обновляет модель пользователя: исправляет username, имя и фамилию на полученные от провайдера. В реальной жизни следует иметь в виду, что username должен быть уникальным, а в социальной сети может быть много "тёзок" и, как следствие, возможно нарушение уникальности. """ user = kwargs['user'] json = kwargs['ulogin_data'] if kwargs['registered']: user.username = json['username'] # В при user.first_name = json['first_name'] user.last_name = json['last_name'] user.email = json['email'] user.save() from django_ulogin.models import ULoginUser assign.connect(receiver = catch_ulogin_signal, sender = ULoginUser, dispatch_uid = 'customize.models')
Можно изучить тестовый проект, в котором реализована функция сохранения данных, полученных от ULogin:
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Hashes for django-ulogin-0.1.2.beta.2.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 662b95561ea670215518742d6baafa0ffdc7b694aa3fa262699f40d8a36ce076 |
|
MD5 | 9d624805175989c6db7f53d939c9fdf7 |
|
BLAKE2b-256 | 4eecead768a334d6e22fc6957b4e809c025ebd0d234717f66caa670a237c57bf |
Hashes for django-ulogin-0.1.2.beta.2.tar.bz2
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8266063fb0302487f4495e74f3e976fcfe9e6adbc633ad5f7afcfffeab4856a4 |
|
MD5 | 7b108734552210c2bb80f88a9993f419 |
|
BLAKE2b-256 | e4bc7124e08658089d8a243120dae0fe33b0c7fa8c70c18fd6bf56f79ec17d28 |