Facebook登录为现有登录的补充?

问题描述:

我正在开发一些具有社交功能的PHP/MySQL电子商务网站,并希望将其与Facebook集成。我已经有了一个本地用户注册/会话处理系统。我设法加入了iframe“社交插件”,例如“Like”按钮。但我真的希望为用户提供通过本地注册流程通过Facebook注册网站的选项。Facebook登录为现有登录的补充?

我了解通过OAuth协议获取访问令牌并最终获取用户ID的想法。我的疑虑是双重的:

  1. 此方法是否安全?这是一个电子商务网站,但我不存储任何信用卡或任何其他敏感数据。我想不出如何被利用,但我只有一个头!

  2. 我知道如何检索初始令牌并在注册过程中获取用户ID。但是,如何识别返回(会话)用户?我是否必须为此实现Javascript SDK(我想避免的)?或者,我是否像处理本机处理会话一样处理会话,但在适当的情况下用会员Cookie中的普通用户ID替换为Facebook用户ID?

如果答案很明显,我很抱歉。我搜索了谷歌和Facebook文档,但是我发现有一半的链接不赞成FBConnect wiki文章,新文档很有帮助,但是对这些示例很少。我不知道什么是支持,什么是新的,以及如何做到这一点!

+1

你有什么理由不想使用SDK?对于所有那些“低级”誓言来说,SDK是一个方便的包装,否则你需要担心自己。只需在你的站点上使用'fb:login-button'按钮,然后使用一行代码来获取登录的用户ID(在js或服务器端)。 – serg 2010-07-24 19:31:05

+0

我想我只是混淆了客户端JavaScript与服务器端PHP的集成。我的网站的本地登录机制使用PHP会话并已建好。我很困惑从JavaScript采取登录身份验证的必要步骤,并建立一个安全的PHP会话。我知道JavaScript设置一个cookie - 我必须依靠它并替换我现有的整个会话设置吗?我的大脑很难在登录过程中涉及第三方的想法! – 2010-07-25 00:31:04

+0

你通常需要JS和PHP的facebook api的。 JS API将用于显示Facebook登录对话框,而PHP可用于获取登录用户ID。您不需要担心会话,在PHP api中,您将首先初始化它(通过提供您的应用程序信息),然后简单地说'$ api-> getLoggedUserId()'(不熟悉确切的php api语法) 。然后,如果需要,您可以自己将会将返回的ID存储在会话中。另一种选择是使用FB连接,以使您的现有注册更易于fb用户(类似于Digg)(*抱歉空间不足*) – serg 2010-07-25 02:24:25

  1. 是的,Oauth非常安全。许多应用程序依赖于它,并且没有已知的方法来利用它。

  2. 你可以这样做的一种方式是存储用户的Facebook ID,当他们回来时,你可以看到他们的ID已经存在于你的记录中,并且知道它是一个返回的用户。他们的会话可能会有所不同(例如自上次访问以来已过期),因此您不想存储他们的访问令牌;但他们的Facebook用户ID始终是相同的。

如何整合基本上在我的网站Facebook注册/登录是我加在我的用户表中的列facebook_id和“注册与Facebook”按钮。如果用户点击Facebook进行身份验证,并返回会话,并且用户是新的,我将重定向到注册页面,尽可能多地填充来自Facebook的数据(如他们的姓名),然后将Facebook ID添加为一个隐藏的输入字段。因此,他们注册时,他们的facebook_id将被填充到数据库中。这是与标准页面相同的注册页面,所以与非Facebook用户的唯一区别是facebook_id字段将为空。如果你愿意,你也可以不要求Facebook用户的密码。

对于用户登录,用户只需点击“使用Facebook登录”按钮并通过Facebook进行身份验证。一旦Facebook给我的会话,我登录用户在任何用户有facebook_id在Facebook的会议。既然你担心安全问题,我会注意到,这个会话不能伪造,因为它只有你和Facebook知道的应用密钥。如果你使用Facebook的SDK(你应该),你不必担心签名和签名验证。您可以从会话中阅读相关信息的事实意味着Facebook的SDK已经对其进行了验证。

This Facebook page是一个关于注册与Facebook集成的伟大指南。

+0

谢谢,那太棒了。我想我只需要一个关于登录机制如何处理现有会话处理的高层次概述。我想我有一个处理它 - 现在要实际尝试它! – 2010-07-25 20:44:23