skip to navigation
skip to content

django-ulogin 0.1.3.beta.2

User social authentication with ulogin.ru service

Downloads ↓

Latest Version: 0.1.5

django-ulogin

Django-ulogin является приложением для социальной аутентификации пользователей с помощью интернет-сервиса ULOGIN.RU

Требования

  • Python 2.6+
  • Django Framework v 1.2.5+
  • requests

Лицензия

Распространяется по лицензии MIT

Установка

  1. Для установки django-ulogin в текущее окружение можно воспользоваться утилитой pip.
pip install django-ulogin
  1. Откройте settings.py и добавьте в INSTALLED_APPS приложение django_ulogin
INSTALLED_APPS += ('django_ulogin', )
  1. Откройте urls.py и добавьте схему URL:
urlpatterns += patterns('',
    url(r'^ulogin/', include('django_ulogin.urls')),
)
  1. Синхронизируйте базу данных
./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:

 
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