2014-10-20 30 views
1

我正在我的网站上使用Facebook进行登录。 与我看到的大多数登录不同,我的用户可能已经注册并希望连接到他们的Facebook。如果他们在网站上拥有帐户时跳过枪并点击“使用Facebook登录”,他们最终可能会创建一个新帐户......这是我们不想要的。Facebook登录JS SDK和PHP SDK。在表单中传递access_token安全吗?

取而代之,我设置了它们,以便他们使用Facebook登录...并且在返回时,检查fbID或fb电子邮件是否存在于当前数据库中。如果不是,那么将它们显示为登录屏幕以正常登录。那时他们会连接这两个账户。我一直在研究这一段时间,我很惊讶我没有看到这个方法在网络上到处都是。对我来说似乎合乎逻辑。

为了清楚起见,我使用FB JS SDK来做与facebook popup的登录。然后在重定向之后,我使用FB PHP SDK从Facebook获取fb用户ID和用户信息。

好的......所以......我一直有的一个问题是,在用facebook登录后...然后重定向回正常的登录屏幕,正常提交时,Facebook身份验证无效。为了完成以安全方式连接这两个帐户,我希望在用他们的Facebook ID更新数据库之前再次对用户进行身份验证。

为了做到这一点......我已决定使用第一次登录来获取fb access_token,然后使用access_token填充正常的登录名。然后在正常提交后,我可以使用access_token获取php sdk的用户信息并将fb ID存储在我的数据库中。

但是,这是安全吗?在表单中传递access_token?另外...我注意到有一种方法可以获得“代码”键,并用它来获取access_token和user_info。但是,我不知道如何在使用fb JS sdk登录时获取“代码”。

对此的任何想法将不胜感激。我希望我很清楚。 谢谢

回答

0

您不应该在客户端和服务器之间传输access_token。如果有人被抓住,他们可以在您的Apps名称下为用户执行操作。

我不确定我明白你的意思是“通过正常提交时,Facebook身份验证无效”。

您是否阅读过使用PHP SDK的认证指南?你可以在这里找到他们:https://developers.facebook.com/docs/php/gettingstarted/4.0.0#authentication

使用FacebookJavaScriptLoginHelper你可以很容易地从登录的用户使用JS获取信息到你的服务器。

对于JS SDK:https://developers.facebook.com/docs/javascript/quickstart/v2.1#login

+1

Thx为答复。我读过这些。麻烦的是我需要在php中获取变量,所以我使用js登录后的php sdk。接下来,在您再次刷新页面后,如我所说,php sdk不再获取变量。 $ user和$ user_info现在都是空的。如果我无法通过access_token,有没有办法我可以a)从fb js sdk获取'code'变量,然后在刷新时传递它?这会更安全吗?我相信,如果我没有弄错,我可以使用代码var以及应用程序秘密和应用程序ID来获取access_token。谢谢 – mebrando 2014-10-21 14:06:02