Facebook身份验证实施

use*_*ged 6 php authentication facebook-graph-api facebook-javascript-sdk facebook-php-sdk

我正在开发一个完全使用facebook身份验证的项目(不存在自定义身份验证实现).Project使用PHP进行服务器端脚本编写.我四处寻找实现快速安全的身份验证机制,但我找不到有关此主题的任何详细说明.Facebook的文件很薄弱,只提供基本信息.

哪种认证方法合适?有一个Javascript SDK和PHP SDK.据我所知,我必须使用Javascript SDK进行登录,然后使用PHP SDK我将检查我的数据库以验证凭据.但是使用带有PHP SDK的Graph API很慢.有没有更好的方法来验证会话?

我是否需要在每次请求时检查会话服务器端(PHP-SDK)?

Fra*_*and 9

与我见过的任何其他方法相比,我最终为我的应用程序做的事情非常简单且相对较快.

  1. 检查signed_request(如果存在),如果存在则解析它.如果没有,请在PHP中将$ login标志设置为1
  2. 我检查用户的会话/ cookie以查看该用户之前是否已通过该应用程序进行身份验证(稍后将返回.如果它为空,请将$ login设置为1.
  3. 如果登录标志设置为1,则将用户发送到安装URL.
  4. 用户安装应用程序并将其发送到连接器页面.此页面用于获取access_token并为用户生成会话/ cookie.这意味着您可能不需要在用户会话的生命周期内检查此access_token的有效性.offline_access也创造了新的机会.您也可以将access_token存储在数据库中.
  5. 每当您拨打电话到Facebook时,请检查例外,如果您遇到身份验证例外,请清除用户的会话和cookie.下次它将强制他们更新access_token,即使此过程对用户不可见.

我在我的应用程序上完成了这个,在大多数情况下意味着我不必向FB查询以查看access_token的有效性,也不必在每个页面视图上不断获取它.我们的目标是减少应用程序的延迟,但Facebook是延迟的最大来源,这样做大大降低了.