Python Social Auth. Логин пользователя, создающий нового пользователя вместо того, чтобы использовать существующего

Я подозреваю причину ошибки, но я не знаю, как ее решить, вот что произошло:

Я сделал pg_dump в локальной базе данных, а затем pg_restore в производственной базе данных на Heroku. Теперь, когда кто-то с уже существующим именем пользователя пытается войти в систему (используя Facebook, Google и т. Д.), PSA создает нового пользователя со случайным числом, добавленным в конце, вместо входа в систему существующего пользователя.

Например, пользователь с именем пользователя JohnSmith входит в систему с помощью FB, поскольку JohnSmith уже существует в базе данных, он создает нового пользователя с именем пользователя JohnSmit654f6b654.

Я думаю, pg_restore Я использовал для восстановления резервной копии базы данных, как-то не включал некоторые важные таблицы psa. Я хотел бы знать, какие таблицы Python Social Auth я должен восстановить вручную, чтобы он работал правильно. Или... может быть, есть другая причина ошибки. Спасибо за вашу помощь.

Кстати, я использую Django 1.8 на Heroku.

редактировать

Мой Social Auth Pipeline:

SOCIAL_AUTH_PIPELINE = (
    'social.pipeline.social_auth.social_details',
    'social.pipeline.social_auth.social_uid',
    'social.pipeline.social_auth.auth_allowed',
    'social.pipeline.social_auth.social_user',
    'social.pipeline.user.get_username',
    'social.pipeline.user.create_user',
    'social.pipeline.social_auth.associate_user',
    'social.pipeline.social_auth.load_extra_data',
    'social.pipeline.user.user_details',
    'letrasclub.utils.create_profile'
)

Это нормальный трубопровод + create_profileэтот последний конвейер создает профиль для пользователя, только если у него его нет. Вероятно, это не источник проблемы, потому что проблема в том, что конвейер создает новых пользователей, что происходит в 'social.pipeline.user.create_user',

2 ответа

Решение

Хорошо, Николай Ф ответ мне помог, но это не ответ на этот вопрос.

Это то, что решило это для меня, на случай, если кто-то найдет это полезным:

Сделать manage.py dumpdata на старой базе данных (которая содержит правильные данные в социальных таблицах аутентификации, в том числе social_auth_usersocialauth)

 python manage.py dumpdata default > social.json

Хитрость заключается в том, чтобы знать, что Python Social Auth не имеет метки приложения, но команда работает с default,

Затем отодвинул файл к героку и побежал:

heroku run python manage.py loaddata social.json

Это решило это.

Проверьте таблицу social_auth_usersocialauth. Он содержит ссылку между идентификатором пользователя социальной сети и идентификатором пользователя django.

Другие вопросы по тегам