Python Social Auth。用户登录创建新用户而不是使用现有用户

时间:2015-12-02 20:00:58

标签: python django python-social-auth

我怀疑错误的原因但我不知道如何解决它,这就是发生的事情:

我在本地数据库上执行了pg_dump,然后在Heroku上的生产数据库上执行了pg_restore。现在,当已经存在用户名的用户尝试登录时(使用Facebook或谷歌等),PSA会在末尾创建一个附加了随机数的新用户,而不是登录现有用户。

例如,用户名 JohnSmith 的用户使用FB登录,因为 JohnSmith 已经存在于数据库中,它会创建一个用户名为的新用户JohnSmit654f6b654

我猜我用来恢复数据库备份的pg_restore某种方式并没有包含一些重要的psa表。我想知道我应该手动恢复哪些Python Social Auth表以使其正常工作。或者......也许错误有不同的原因。谢谢你的帮助。

顺便说一句,我在Heroku上使用Django 1.8。

修改

My 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 个答案:

答案 0 :(得分:4)

检查 social_auth_usersocialauth 表。它包含社交网络用户ID和django用户ID之间的链接。

答案 1 :(得分:0)

好的,Nikolay F回答帮助了我,但这不是这个问题的答案。

这就是为我解决的问题,以防有人发现它有用:

在旧数据库上执行manage.py dumpdata(在社交身份验证表上包含正确的数据,包括social_auth_usersocialauth

 python manage.py dumpdata default > social.json

这里的诀窍是要知道Python Social Auth没有应用程序标签,但该命令适用于default

然后,将文件推送到heroku并运行:

heroku run python manage.py loaddata social.json

解决了它。