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.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6537b8144756b29c6edc44f7659be465962f1dc71c6954691ecc3261000f5565 |
|
MD5 | ee5095f5c34b62c063f687a833cc9ef4 |
|
BLAKE2b-256 | 6b9f83f9c1e8216803ca03efdecbd0e66c9764137e572ab0bfd28111616f39ce |
Hashes for django-ulogin-0.1.2.beta.0.tar.bz2
Algorithm | Hash digest | |
---|---|---|
SHA256 | c6f44c473e45a3e8f7a62af88205855b596d615bf80b50f6c9dae5f7fcc11d47 |
|
MD5 | ea8a6a5fbdf338672fffc4c00ccb0a15 |
|
BLAKE2b-256 | 49f3123980f4850aab34cab17e3b7dba24cba1d7e6fdab37bb19b13ac4450cca |