3

我对Facebook开发相当陌生,但拥有PHP和JavaScript经验。注册和登录最佳实践

我一直在阅读有关Facebook整合的SDK文档和各种文章,但发现一些基本问题仍在我的脑海中打开!

我努力实现以下目标:

  • 创建使用Facebook的只注册一个网站,并登入
  • 使用PHP来存储注册用户的Facebook用户ID在数据库中我的应用程序服务器上,以及针对这些用户的一些有限的应用特定信息。所有'通用'信息(电子邮件地址等)都应该从facebook上撤回。
  • 当用户登录时,为该用户获取数据库记录的组合,以及facebook的东西。

我迄今取得什么:

  • 我已经使用了注册插件来显示注册按钮,以未注册用户,并为用户登录按钮谁登录时,他们的土地上页。我隐藏登录按钮使用JavaScript和jQuery,如果用户已登录
  • 我也有一个页面接收注册用户并解释signed_request,将用户的ID添加到我的数据库中的用户表。

凡我产生了困惑:

  • 我想使用JavaScript SDK进行用户身份验证(因为它真的很容易) - 这显然是异步客户端上完成的。
  • 话虽如此,一旦用户使用JS SDK登录,我需要从我的数据库中获取一些数据。我很高兴通过AJAX请求但是这样做,这需要传递Facebook用户ID作为该请求的一部分。当然,这可能很容易被欺骗/改变由一个精明的用户&他们可以登录到我的应用程序作为其他人吗?

问: 如何安全地传递有关谁已使用JS API到我的服务器登录的用户的信息?

如果答案是“你不能”那么为什么打扰与JS API的身份验证?这只适用于真正轻触的应用吗?

在此先感谢您的帮助!

+0

您可以在将用户标识传递给ajax请求之前加密用户标识。例如,使用客户端的用户代理作为加密过程的一部分。 –

回答

1

简单的答案是,您使用的是cookies。 This Facebook blog post有一个明确的例子,说明如何实现客户端登录并将数据公开给服务器。

+0

谢谢 - 这正是我一直在寻找的。我确实发现facebook的文档实际上有点欠缺,但与我迄今为止混淆了我的方式的博客相结合,一定是错过了这个。 –

0

在签署请求看一看:https://developers.facebook.com/docs/authentication/signed_request/

它提供了关于如何签署请求工作以及如何/应该使用它们一个可爱的小底漆。如果我正确理解你的问题,这应该回答你为什么/如何提供额外安全层的问题。发送一个签名请求,只有您的应用程序拥有自己的app_secret可以解码。

+0

谢谢 - 这是一个很好的签名请求资源。然而,我不相信这是我的问题的答案,因为我有需要在服务器端传递给客户端的信息。要真正生成一个签名的请求,我需要在客户端使用应用程序的秘密,我绝对不想这么做...... –