9

我正在开发一个具有一些社交方面的 PHP/MySQL 电子商务网站,并希望将其与 Facebook 集成。我已经有一个本地用户注册/会话处理系统。我设法包含了 iframe“社交插件”,例如“喜欢”按钮。但我真的很想为用户提供通过 Facebook 注册网站的选项,而不是本地注册过程。

我理解通过 OAuth 协议获取访问令牌并最终获取用户 ID 的想法。我的担心有两个方面:

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

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

如果答案很明显,我很抱歉。我已经搜索了 Google 和 Facebook 文档,但我发现有一半链接指向已弃用的 FBConnect wiki 文章,新文档很有帮助,但示例很少。我不知道仍然支持什么,什么是新的,以及如何做到这一点!

4

1 回答 1

15
  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 已经对其进行了验证。

这个 Facebook 页面是一个很好的将注册与 Facebook 集成的指南。

于 2010-07-25T19:02:24.377 回答