我对我的 web 应用程序上的 facebook 登录有疑问。
用户可以使用 facebook 登录或手动注册。手动注册后,用户将添加到数据库“用户”中。当用户第一次使用 facebook 登录时,也会发生同样的情况(但是,没有将密码添加到数据库中)
我的问题:是否可以允许使用 facebook 登录的人使用“普通”登录表单,即用户手动注册的登录表单?如何检查用户输入的密码是否与他们的 Facebook 密码匹配?
或者这完全不可能?
顺便说一句,我正在使用 codeigniter
我对我的 web 应用程序上的 facebook 登录有疑问。
用户可以使用 facebook 登录或手动注册。手动注册后,用户将添加到数据库“用户”中。当用户第一次使用 facebook 登录时,也会发生同样的情况(但是,没有将密码添加到数据库中)
我的问题:是否可以允许使用 facebook 登录的人使用“普通”登录表单,即用户手动注册的登录表单?如何检查用户输入的密码是否与他们的 Facebook 密码匹配?
或者这完全不可能?
顺便说一句,我正在使用 codeigniter
我认为最好的可能性是让用户能够为他们的帐户创建密码,因为您无法与 Facebook 交换密码(这是使用 OAuth 的基础,不知道外部提供商的用户密码)。
唯一可能的方法是在他们登录后要求他们输入密码。这样,他们将能够使用 facebook 或他们的电子邮件地址和他们刚刚指定的密码登录。
没有办法确保密码与 Facebook 的相同,我不建议这样做,即使这是可能的(不可能,并且会让你在使用 facebook TOS 时遇到麻烦)。您的用户可以选择他们想要的密码。
是的,实际上这很简单,而且我已经不止一次这样做了。除此之外,我认为这是一个很好的做法,众所周知,Facebook 过去会更改他们的 API 并搞砸 FB 登录。
您可以通过以下两种方式之一进行。
第一个不需要用户交互,但不是最安全的做事方式,也不是任何需要真正安全的站点的好主意。只需在第一次输入用户数据时生成一个随机密码,然后通过他们的 FB 电子邮件将其通过电子邮件发送给用户。问题是,首先通过电子邮件发送密码可能会带来危险的安全性,其次很多人使用丢弃的 FB 电子邮件帐户,因此他们可能永远看不到电子邮件。
其次是通过用户控制面板上的用户交互。只需允许他们更新密码字段即可。对于通过 FB 登录的用户,您不能要求提供以前的密码,但您可以使用从 FB 帐户中抓取的一些其他数据,即使询问他们的 FB 电子邮件地址也会有些安全,因为 FB 现在会掩盖公众的信息。
不,没有办法获得他们的 FB 密码,而且 Facebook 永远不会改变他们的 API 来允许这样做。