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.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7744a0492ffc29e29620fbf82f21c7c6e7fea8e97e66edb4a7962cb1a620b09d |
|
MD5 | e4b8906e987cda7eab399fd327a5b4d3 |
|
BLAKE2b-256 | 03c31ce9797b61f5f705a78c3723acf8e564ea150573573ba57355f21b00c864 |
Hashes for django-ulogin-0.1.2.beta.1.tar.bz2
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5845618fb5c2a9109d9883bf7c64a69d0067cf12198949f3c7c68c234b0cfa0c |
|
MD5 | dd44e0c19b0f8565638ffea80db9b9b9 |
|
BLAKE2b-256 | 2c502245e81f5a409faa65f5c91762d229f9b423f254128fd578faff1b0f4365 |