Проблема с каллбэк от 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/
?
Её к любому урлу можно привязать :) но если по букварю делать, то да, так и получится
Спасибо за помощь, удалось всё запустить.