使用cron中的PHP SDK 4查询Facebook页面状态

时间:2014-11-12 13:59:15

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

我已经找到了很多关于这个问题的线索,但我找不到任何可行的解决方案。

我需要做的就是在后台下载公共页面状态(使用cron)。到目前为止,我已经使用了以下代码。

use Facebook\FacebookSession;
use Facebook\FacebookRequest;
use Facebook\FacebookResponse;

public function actionDownload() {
    $appId = "...";
    $appKey = "...";
    $pageId = '...';

    // Create FB session.
    FacebookSession::setDefaultApplication($appId, $appKey);
    $session = FacebookSession::newAppSession();

    // Perform FB request.
    $request = new FacebookRequest($session, 'GET', "/" . $pageId . "/posts");
    $response = $request->execute();
    $results = $response->getGraphObject()->asArray();

    // Parse response and save results.
    /// ...
}

一个例外情况很好。我不想要所有帖子。我只需要状态。所以我已经将“帖子”边缘更改为“状态”边缘,现在它因FacebookAuthorizationException而失败(#100)需要用户会话。尽管“页面/状态”边缘文档声明

,但它仍然失败
  

查看任何公开共享状态需要任何有效的访问令牌。

那有什么不对?如果app令牌不够,我如何在后台cron进程中获取用户访问令牌?

1 个答案:

答案 0 :(得分:0)

请参阅文档:https://developers.facebook.com/docs/graph-api/reference/v2.2/page/feed

确保App Access令牌正确无误。尝试自己设置App令牌:

$facebook->setAccessToken($appAccessToken);

App Access Token只是" App-ID | App-Secret"。

使用正确的令牌,它应该有效:https://developers.facebook.com/tools/explorer/145634995501895/?method=GET&path=bladauhu%2Fstatuses&version=v2.2

如果您只想要用户发布,则可能需要使用Feed端点并过滤掉网页发布。