如何使用Facebook服务器端流与FOSFacebookBundle

时间:2012-09-24 03:47:41

标签: facebook symfony fosfacebookbundle

FOSFacebookBundle的默认实现是使用客户端流程。我试过了,它的确有效。现在我需要实现服务器端流程。然后我这样做:

单击超链接将转到Action的路径:

$client_id = $this->container->getParameter('fos_facebook.app_id');
$redirect_uri = urlencode($this->generateUrl('_security_check', array(), true));
$scope = implode(',', $this->container->getParameter('fos_facebook.permissions'));
$state = md5(uniqid(rand(), TRUE)); //CSRF protection
$this->getRequest()->getSession()->set('facebook_state', $state);

$oauthUrl = 'https://www.facebook.com/dialog/oauth?client_id='.$client_id.'&redirect_uri='.$redirect_uri.'&scope='.$scope.'&state='.$state;
return $this->redirect($oauthUrl);

重定向到Facebook,当用户点击允许然后重定向回我的应用程序,其中操作是处理客户端操作的相同操作

它返回错误: 必须使用活动访问令牌来查询有关当前用户的信息

此错误是由以下行引起的:

$me = $this->fbapi->api('/me');

使用facebook服务器端流程的正确实现是什么?

1 个答案:

答案 0 :(得分:0)

  

重定向到Facebook,当用户点击允许然后重定向回我的应用程序,其中操作是处理客户端操作的相同操作

这是服务器端Auth流程的前三个步骤。

现在,您还必须执行第四步https://developers.facebook.com/docs/authentication/server-side/