django-ulogin 0.1.3.beta.2
User social authentication with ulogin.ru service
Latest Version: 0.1.5
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
- nickname
- bdate (дата рождения, передаётся в формате dd.mm.yyyy)
- sex (пол: 1 означает женский, 2 - мужской)
- photo (аватар, размер 100х100 пикселей)
- photo_big
- city
- country
Внешний вид виджета определяется параметром ULOGIN_DISPLAY. Доступно три варианта:
- panel
- small (по умолчанию)
- button
Список используемых провайдеров определяется директивой ULOGIN_PROVIDERS. По умолчанию включены:
- vkontakte
- 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:
| File | Type | Py Version | Uploaded on | Size | # downloads |
|---|---|---|---|---|---|
| django-ulogin-0.1.3.beta.2.tar.bz2 (md5) | Source | 2011-12-15 | 9KB | 255 | |
| django-ulogin-0.1.3.beta.2.tar.gz (md5) | Source | 2011-12-15 | 9KB | 243 | |
| django-ulogin-0.1.3.beta.2.zip (md5) | Source | 2011-12-15 | 20KB | 252 | |
- Author: marazmiki
- Home Page: http://pypi.python.org/pypi/django-ulogin
- Download URL: http://bitbucket.org/marazmiki/django-ulogin/get/tip.zip
- License: MIT license
- Platform: OS Independent
- Categories
- Package Index Owner: marazmiki
- DOAP record: django-ulogin-0.1.3.beta.2.xml
