marazmiki/django-ulogin

Проблема с каллбэк от uLogin

rmehtije opened this issue · 12 comments

На данный момент не запускаются функции каллбэк.

ULOGIN_CREATE_USER_CALLBACK = "oauth.authorization.my_user_create"
ULOGIN_LOGIN_CALLBACK = "oauth.authorization.my_user_create"`

Также с сигналами в мембер модель.

def catch_ulogin_signal(*args, **kwargs):
    user = kwargs['user']
    json = kwargs['ulogin_data']
    ulogin = kwargs['ulogin_user']
    logger.info('ulogin============= %s', ulogin)
    logger.info('user============= %s', user)
    logger.info('json============= %s', json)
    if kwargs['registered']:
        user.first_name = json['first_name']
        user.last_name = json['last_name']
        user.email = json['email']
        user.password = f'321_{profile["username"]}_123'
        user.save()

assign.connect(catch_ulogin_signal, sender=ULoginUser, dispatch_uid='member.models')
django==2.2.3
Python 3.6.8

Логи пустые. public.django_ulogin_uloginuser тоже пустой, но сервис Ulogin авторизирует и работает.
Есть идея у кого нибудь ?

Не хватает данных чтобы что-то сказать наверняка.

По поводу сигнала могу предположить, что он назначается где-то в таком месте, которое джанга не выполняет при инициализации проекта. Сигналы обычно стараются указывать либо в models приложения, либо вызвать изнутри apps.AppConfig.ready

Попыталься вызвать с apps.AppConfig.ready но увы django не нравится импорт библиотеки from django_ulogin.models import ULoginUser, выдал ошибку: raise AppRegistryNotReady("Apps aren't loaded yet.").

Да, я понял всю иронию ))

Вот конечный результат apps.py

from django.apps import AppConfig

class MemberConfig(AppConfig):
    name = 'member'

    def ready(self):
        from django_ulogin.signals import assign
        from django_ulogin.models import ULoginUser
        from member.models import catch_ulogin_signal

        import logging
        logger = logging.getLogger('CHECK')
        logger.info('============= TEST THIS')
        
        assign.connect(catch_ulogin_signal, sender=ULoginUser, dispatch_uid='member.models')

Убедился что инициализация происходит. Но увы на этом всё. Не в логах, не в базе. 0. Какие данные я могу вам предоставить для лучшего анализа ?

Идеально — сделайте минимальный проект, в котором воспроизводится бага и разместите его исходники на гитхабе, разберёмся. Ещё идеальнее — если при этом будет развёрнута живая версия, на Heroku, например

Поднял новый проект и по ходу дела понял ошибку которую я допустил. Прописал схему УРЛ адресов на уровне приложения а не проекта.
На данный момент получилось авторизоваться на тестовом проекте. Но я использую https в главном и поэтому я прописал ULOGIN_REDIRECT_URL, поскольку как я понял это единственный вариант. Оттуда возникает другая проблема: CSRF verification failed.
И тут я встрял.

Линк: http://116.203.87.44:9999/
Репо: https://github.com/rmehtije/django-ulogin

Спасибо

Я так понимаю, что Вы в ULOGIN_REDIRECVT_URL прописали не специально обученную страницу, которая должна принять ответ от ЮЛогина и распарсить его, а свою собственную, которая тупо выводит форму?

То есть для того чтобы ulogin успешно работал с https мне нужно создать парсер ?

Нет, зачем? Из коробки же поставляется вьюха, которая этим занимается. Она, кстати, толерантна к CSRF

Я как понимаю это: /ulogin/postback/ ?

Её к любому урлу можно привязать :) но если по букварю делать, то да, так и получится

Спасибо за помощь, удалось всё запустить.