3

我将 python-social-auth 与 django 一起使用。我想通过 facebook 进行授权,但在此之前,我已经以默认方式(电子邮件、密码)注册了 facebook 使用的电子邮件。我可以将 facebook 帐户与注册帐户相关联吗?我试图搜索,但没有

4

1 回答 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 回答