我正在使用django的python-social-auth。 我想通过Facebook授权,但之前,我已经使用facebook使用的电子邮件以默认方式(电子邮件,密码)注册。 我可以将Facebook帐户与注册帐户相关联吗? 我试图搜索,但没有什么
答案 0 :(得分:6)
检查Associate users by email,这应该说明如何操作。
通过电子邮件关联用户
如果电子邮件已经与用户帐户匹配,有时候社交帐户会自动关联。
例如,如果用户使用他的Facebook帐户注册,然后注销,并且下次尝试使用Google OAuth2登录,那么用户获得的内容可能很好(如果两个社交网站都配置了相同的电子邮件地址)进入Facebook后端创建的初始帐户。
通过启用associate_by_email管道功能可以实现此方案,如下所示:
SOCIAL_AUTH_PIPELINE = ( 'social_core.pipeline.social_auth.social_details', 'social_core.pipeline.social_auth.social_uid', 'social_core.pipeline.social_auth.auth_allowed', 'social_core.pipeline.social_auth.social_user', 'social_core.pipeline.user.get_username', 'social_core.pipeline.social_auth.associate_by_email', # <--- enable this one 'social_core.pipeline.user.create_user', 'social_core.pipeline.social_auth.associate_user', 'social_core.pipeline.social_auth.load_extra_data', 'social_core.pipeline.user.user_details', )
默认情况下禁用此功能,因为使用所有后端自动执行此过程并非100%安全。并非所有提供商都会验证您的电子邮件帐户,而其他用户也可以利用该帐户。
以用户A在您的网站注册,电子邮件地址为foo@bar.com。然后恶意用户注册到另一个不使用同一帐户验证其电子邮件的提供商。最后,此用户将转向您的站点(支持该提供商)并注册,因为电子邮件是相同的,恶意用户将控制用户A帐户。
编辑:将已修复和复制的文档详细信息链接到此答案中。