我一直在使用django-rest-auth,它非常适合电子邮件注册流程。我一直在尝试实现社交登录(通过FB),在最新版本(v.0.9.3)中,似乎有人已经通过电子邮件创建了一个帐户,如果该用户尝试登录,他们只会引发错误通过社交。此评论在提交中:
# We have an account already signed up in a different flow
+ # with the same email address: raise an exception.
+ # This needs to be handled in the frontend. We can not just
+ # link up the accounts due to security constraints
一些问题(在github问题中也发布了这个问题):为什么这是一个安全问题?您信任OAuth提供商(在这种情况下为FB)的社交认证的重点吗?第二,如何在前端处理这个问题?人们通常首先注册电子邮件(通常只是因为网站或应用程序在开发周期的后期添加了社交登录)。在我看来,这让我留下的唯一选择是告诉用户“抱歉,您只能使用您的电子邮件帐户登录”。或者只是选择FB登录或电子邮件(或Twitter或其他),但只能选择其中一个。我在这里错过了什么吗?这对我来说似乎非常有限。
答案 0 :(得分:1)
安全问题来自以下事实:无法验证社交帐户是否与之前注册的用户完全相同。
要将社交帐户附加到django-rest-auth中的现有用户,您需要使用社交连接视图。以下是文档中的示例:http://django-rest-auth.readthedocs.io/en/latest/installation.html#additional-social-connect-views。
社交连接视图类似于常规社交登录,除了,您必须已经作为普通用户进行身份验证,因此应用程序会知道它是您,然后才能附加社交帐户。
所以示例流程如下:
以现有用户身份登录(之前作为非社交帐户注册)
访问/rest-auth/facebook/connect/
以将Facebook社交帐户附加到此现有用户。