我将 python-social-auth 与 django 一起使用。我想通过 facebook 进行授权,但在此之前,我已经以默认方式(电子邮件、密码)注册了 facebook 使用的电子邮件。我可以将 facebook 帐户与注册帐户相关联吗?我试图搜索,但没有
问问题
1880 次
1 回答
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% 安全的。并非所有提供商都会验证您的电子邮件帐户,其他用户可以利用这一点。
以使用电子邮件 foo@bar.com 在您的站点中注册的用户 A 为例。然后,恶意用户注册到另一个未使用同一帐户验证他的电子邮件的提供商。最后,该用户将转到您的站点(支持该提供商)并注册它,因为电子邮件是相同的,恶意用户将控制用户 A 帐户。
编辑:将已修复和复制的文档详细信息链接到此答案中。
于 2014-02-18T16:14:24.030 回答