marazmiki / django-ulogin

Plug a social authentication feature to your Django application easy!
https://django-ulogin.readthedocs.io/ru/latest/
MIT License
26 stars 19 forks source link

Сигнал авторизации пользователя #18

Closed DrMartiner closed 12 years ago

DrMartiner commented 12 years ago

При использование примера

def catch_ulogin_signal(*args, **kwargs):
    user=kwargs['user']
    json=kwargs['ulogin_data']

    if kwargs['registered']:
        user.last_name=json['last_name']
        user.email=json['email']
        kwargs['user'].save()

вываливается ошибка:

KeyError at /ulogin/postback/
'username'

Возможно это связано с отложенными вычислениями

marazmiki commented 12 years ago

Покажите трейс полностью, пожалуйста. И скажите, какая версия django-ulogin установлена: пока что не могу понять, откуда в postback взялось обращение к ключу username. Нет там такого...

DrMartiner commented 12 years ago

проблема была в том, что в json нет username (как в примере на главной проекта https://github.com/marazmiki/django-ulogin/ ). Вышел из положения вот так:

def catch_ulogin_signal(*args, **kwargs):
    json=kwargs['ulogin_data']
    user=kwargs['user']

    if kwargs['registered']:
        user.first_name=json.get('first_name', '')
        user.last_name=json.get('last_name', '')
        user.email=json.get('email', '')
        user.save()

        profile = Profile(
            user=user,
            name='%s %s' % (user.first_name, user.last_name)
        )
        profile.save()

Чтобы в json появилось username, нужно указать что-то в ULOGIN_FIELDS - верно?

UDP: (username в json == имя пользователя в соц. сети)?

marazmiki commented 12 years ago

Список всех допустимых полей можно найти на сайте юлогина: http://ulogin.ru/faq.html

Похоже, с username в примере я погорячился, на самом деле то поле называется nickname. Спасибо, опечатку исправлю.

Что касается всего остального: поля, которые должны приходить в json от ulogin.ru действительно перечисляются в ULOGIN_FIELDS.