使用PHP SDK v5绕过Facebook登录以发出图形API请求

时间:2016-03-18 11:56:47

标签: php facebook facebook-graph-api facebook-php-sdk

我正在开发一个需要使用Facebook Graph API的系统。我已阅读文档并安装了PHP SDK以发出请求。然而,我正在开发的系统将在晚上作为cron运行。

文档暗示,为了执行请求,用户必须登录,以便可以生成访问令牌以进行请求。由于它将在晚上运行,这是不可能的。有没有办法解决这个问题,所以没有用户登录但仍然可以提出请求?

我目前的代码如下:

$fb = new Facebook\Facebook([
  'app_id' => '123456789101112',
  'app_secret' => 'thisisasecret',
  'default_graph_version' => 'v2.5',
]);

为了给出一些上下文,我想要提出的请求将取消对一个组发表的评论列表。当单击获取代码按钮时,下面的块中的代码已从Graph API Explorer中获取。

$request = new Facebook\FacebookRequest(
  'GET',
  '/123456789_123456789',
  array(
    'fields' => 'comments.filter(stream).limit(50){message,id,from,parent}'
  )
);
//$page .= $request;
//$response = $request->execute();
$response = $request;
//$graphObject = $response->getGraphObject();
$graphObject = $response->getGraphVersion();
//$getDecodedBody = $response->getDecodedBody();
/* handle the result */ 

第二个问题是V5 SDK中不再提供$response = $request->execute();,因此我不确定该请求将如何实现,以及如何获取返回的结果。

1 个答案:

答案 0 :(得分:0)

如果您代表其他用户提出请求,则需要其访问令牌。这意味着您需要他们使用Facebook登录。然后,您可以将访问令牌保存在数据库中,以便您的cron作业可以在后台访问它。

如果您是群组所有者,则可以使用Graph Explorer获取临时访问令牌,但它会在30分钟后过期。您需要通过CURL请求将该令牌发送到Facebook extend its expiration