尝试通过Facebook PHP SDK与cron获取最新页面状态

时间:2013-11-23 16:17:31

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

我正试图通过PHP SDK从Facebook页面获取最新状态,然后通过cron作业将其作为帖子插入我的网站,但似乎卡在访问令牌部分。这是我到目前为止所做的:

require 'facebook-php-sdk-master/src/facebook.php';
require 'wp-load.php';

// I replaced these obviously
$facebook = new Facebook(array(
  'appId'  => FB_APP_ID,
  'secret' => FB_SECRET,
));

try {
  $feed = $facebook->api('/322522705880/feed?limit=1');
}  catch (FacebookApiException $e) {
  error_log($e);
}

然后我使用$ feed ['data'] [0] ['description']等来创建帖子。但是,我唯一可以获得$ feed来获取任何数据的时候是我重新安装一个必须激活访问令牌的Facebook Wordpress插件,因为它会工作几个小时,然后停止。我无法在任何地方找到任何关于如何从脚本生成我自己的信息的信息,https://developers.facebook.com/docs/reference/php/facebook-getAccessToken/并没有真正提供任何有用的信息。如果有人能指出我正确的方向,那将是伟大的。 wordpress插件以某种方式执行此操作,我只需要知道如何复制它。

我在插件中做了一些探索,发现了这个

$token = false;

if (!$token) {
    // Get temporary token
    $token = $this->model->fb->getAccessToken();
    if (!$token) return false;

    // Exchange it for the actual long-term token
    $url = "https://graph.facebook.com/oauth/access_token?client_id={$app_id}&client_secret={$app_secret}&grant_type=fb_exchange_token&fb_exchange_token={$token}";
    $page = wp_remote_get($url, array(
        'method'        => 'GET',
        'timeout'       => '5',
        'redirection'   => '5',
        'user-agent'    => 'wdfb',
        'blocking'      => true,
        'compress'      => false,
        'decompress'    => true,
        'sslverify'     => false
    ));
    if(is_wp_error($page)) return false; // Request fail
    if ((int)$page['response']['code'] != 200) return false; // Request fail

    parse_str($page['body'], $response);
    $token = isset($response['access_token']) ? $response['access_token'] : false;
    if (!$token) return false;
}

但这给了我“没有指定用户访问令牌”,我不确定如何使用或获取用户访问令牌?

1 个答案:

答案 0 :(得分:3)

您需要拥有的只是一个应用程序令牌。您可以使用app_id和app_secret“构建”应用访问令牌:

access_token=APP_ID|APP_SECRET

这是两个值之间的管道符|

一旦你有了这个,你就可以向这样的端点发出请求:

https://graph.facebook.com/cocacola/feed?limit=1&access_token=APP_ID|APP_SECRET

响应将是这样的:

{
   "data": [
      {
         "id": "40796308305_10152854866613306",
         "from": {
            "name": "Verone Diedericks",
            "id": "100003842548992"
         },
         "to": {
            "data": [
               {
                  "category": "Food/beverages",
                  "name": "Coca-Cola",
                  "id": "40796308305"
               }
            ]
         },
         "message": "Vony nd kimo or just vony",
         "privacy": {
            "value": ""
         },
         "type": "status",
         "created_time": "2013-11-26T20:13:11+0000",
         "updated_time": "2013-11-26T20:13:11+0000"
      }
   ],
   "paging": {
      "previous": "https://graph.facebook.com/40796308305/feed?limit=1&access_token=163586277060593|Rtsz7h6IiHu7Uva9D5S4VW0FKu8&since=1385496791&__previous=1",
      "next": "https://graph.facebook.com/40796308305/feed?limit=1&access_token=163586277060593|Rtsz7h6IiHu7Uva9D5S4VW0FKu8&until=1385496790"
   }
}