Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
rmehtije opened this issue Feb 15, 2021 · 12 comments
Open

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

rmehtije opened this issue Feb 15, 2021 · 12 comments

Comments

@rmehtije
Copy link

rmehtije commented Feb 15, 2021

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

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 авторизирует и работает.
Есть идея у кого нибудь ?

@marazmiki
Copy link
Owner

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

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

@rmehtije
Copy link
Author

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

@marazmiki
Copy link
Owner

marazmiki commented Feb 16, 2021 via email

@rmehtije
Copy link
Author

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

Вот конечный результат 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. Какие данные я могу вам предоставить для лучшего анализа ?

@marazmiki
Copy link
Owner

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

@rmehtije
Copy link
Author

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

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

Спасибо

@marazmiki
Copy link
Owner

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

@rmehtije
Copy link
Author

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

@marazmiki
Copy link
Owner

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

@rmehtije
Copy link
Author

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

@marazmiki
Copy link
Owner

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

@rmehtije
Copy link
Author

rmehtije commented Mar 8, 2021

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants