2011-05-26 134 views
1

我添加脸书一次登录到我的网站。只是想从已经实施它的人那里得到一些反馈。脸书一次登录认证

目前我允许用户使用fb:login登录我的网站,假设他们在fb上有一个有效的帐户并成功登录,如果从fb返回的相同电子邮件地址与我自己持有的电子邮件地址相匹配数据库,他们会自动登录到我的网站。

我遇到的问题是,我发现硬只有电子邮件作为我的用户和我的网站之间的主要身份验证。对于那些已经破坏了这一点的人,你可以请你分享一些关于如何在用户登录到你的网站时验证用户的逻辑(理论)。

+0

不明白你的意思,用户给它的电子邮件ID,你匹配你持有的电子邮件ID和用户给出的FB?你如何做登录?你能解释一下吗?你没有使用fb:login? – 2011-05-26 05:39:40

+0

嗨,谢谢你的回复。是的,我使用的是fb:login,一旦用户使用他们的fb帐户详细信息登录,我有一个getProfile方法来获取他们的电子邮件地址。然后我尝试将fb的获得的电子邮件地址与我在数据库中的电子邮件地址相匹配。 问题是,这是其他人正在做的或者是否应该执行其他检查,例如查看其他参数,cookie等。 – 2011-05-26 08:29:31

回答

0

我有和你一样的问题。我的数据库中有用户名和电子邮件地址,我想添加Facebook连接插件。

现在,在登录页面上,我让用户选择标准和Facebook登录。如果一个人选择Facbook登录我检索与Facebook的PHP SDK他的Facebook ID(see on github):

$facebook = new Facebook(...); 
$id = $facebook->getUser(); 
  • 如果我在我的记录有这个Facebook的ID,我登录的用户

  • 。如果没有,我找回了自己的电子邮件地址:

    $profile = $facebook->api('/me'); 
    $email = $profile['email']; 
    
    • 如果我有我的数据库了该邮件,我将facebook ID存储在该记录中(下次使用),然后我将用户登录。

    • 如果不是,我使用Facebook ID和电子邮件创建一条新记录。之后,用户可以在他的设置中设置密码,以便能够使用标准登录(无Facebook)登录。

您可能要检查example of the Facebook PHP SDK,以便更好地了解流动的作品。

希望有所帮助。

+0

谢谢quentin多数民众赞成我正是需要 – 2011-05-30 11:51:34

+0

任何时候:)你可以联系我(通过我的个人资料)如果你在这个过程中有任何问题。我去过那儿。 – Quentin 2011-05-30 12:00:20

0

我也做到了这一点。我现在已经明白,你想要匹配的电子邮件地址,如果用户更改他的电子邮件地址,你想更新它。其简单的解决方案是将用户信息存储在数据库中。我所做的,我存储由facebook作为用户名返回的用户配置文件ID,并将其转换为md5我存储了与用户返回的密码和电子邮件地址相同的配置文件ID。现在,每个Facebook用户在我的数据库中都有其唯一的ID。每当用户来到我的网站并登录Facebook,有两种情况

1-我比较配置文件id与我的数据库,如果找到记录,我总是更新由Facebook返回的特定字段中的电子邮件地址..现在我可以拥有用户的最新电子邮件地址。
2-如果用户不在我的数据库中,则通过应用上述方法插入记录。

希望它能帮助你

+0

虽然这不是我所期待的,但感谢您将它分享为iive甚至不是尽管关于这种可能性和不幸也在执行。我想知道的是,用户通过fb:login使用他们的fb账户详细信息登录后,除了检查他们的电子邮件地址以外,如何检查数据库中的同一用户? – 2011-05-26 09:58:05

+0

@ david-l我只是检查用户是否在我的数据库,然后我不比较电子邮件地址,我只是更新该用户的行。如果用户不在我的数据库然后我插入他的记录在我的数据库hainvg个人资料ID作为用户名,密码和他的电子邮件地址 – 2011-05-26 10:09:41