在我的网站集成facebook连接

时间:2012-03-07 11:10:25

标签: facebook facebook-login

好的,我已经有了一个现有的网络应用程序。后端是休息界面。最初,要登录,用户必须注册,然后使用他的凭据登录。但我想整合facebook登录;

所以在我的休息界面中我又添加了两个方法

  1. registerfbUser:注册用户帐户

  2. loginfbUser:允许用户在使用他的脸书帐号后登录系统 注册

  3. 我已经能够使用facebook connect和图形api连接到facebook。现在,将使用ajax调用loginfbUser,并以JSON格式提供详细信息。

    我的问题是我应该将哪些信息传递给方法loginfbUser以验证Facebook用户。我不能只传递facebook id,因为api将会打开,因此任何人都可以用json格式的facebook id发出POST请求

3 个答案:

答案 0 :(得分:2)

在我们公司,我们通过AJAX广泛使用FB的身份验证来“登录”用户。我们这样做的方式很简单。在用户“登录”或通过页面上的FB的JS SDK进行身份验证后,我们会在AJAX调用中将访问令牌发送到我们的服务器。然后,我们的服务器通过向graph.facebook.com发送/ me api调用并从那里获取FB id来交叉验证此访问令牌。通过这样做,我们确定只有这个人和这个人。

完成此操作后,我们存储此信息(访问令牌和用户的脸谱ID)是服务器端会话,因此同一会话中的所有未来呼叫都将正确识别用户。

如果您的起始点是FB应用程序选项卡或画布应用程序,则访问令牌和fbId由Facebook在签名请求中发送,您可以“取消签名”并用于存储在会话中并避免必须调用graph.facebook.com(可能有点慢,形成性能/用户体验瓶颈)

答案 1 :(得分:1)

AFAIK,Facebook Connect的重点是让网络开发者不再担心用户名/密码。我相信这个想法是将Facebook ID存储在用户数据库中,并使用Graph API查看该用户当前是否登录Facebook。通过这种方式,您的网站可以通过Facebook在Facebook上进行身份验证。

答案 2 :(得分:1)

假设您使用的是JS SDK和PHP SDK,那么执行需要FB身份验证的操作的任何函数都应该如下所示:

$this->_facebook = new Facebook(array(
  'appId'  => $this->app_id,
  'secret' => $this->app_secret,
  'fileUpload' => true, 
  'cookie' => true
));

try {
  $this->_fb_userid = $this->_facebook->getUser();
} catch (FacebookApiException $e) {
  // the user is not authenticated!
  return;
}

try {
  $this->_fb_me = $this->_facebook->api('/me');
} catch (FacebookApiException $e) {
  // API call didn't work, show error...
  return;
}

如果您的用户通过javascript进行身份验证,PHP SDK将自动了解登录用户。 JS SDK通过cookie将此信息发送到您的服务器,PHP SDK会自动读取它。