facebook - 尝试使用 cron 通过 Facebook PHP SDK 获取最新页面状态

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

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

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 插件时,该插件必须以某种方式激活访问 token ,因为它会工作几个小时,然后停止。我在任何地方都找不到任何关于如何从脚本生成我自己的脚本的信息,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;
}

但这给了我“未指定用户访问 token ”,并且我不确定如何使用或获取用户访问 token ?

最佳答案

为此,您所需要的只是一个应用程序 token 。您可以使用 app_id 和 app_secret“构建”应用程序访问 token :

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"
   }
}

关于facebook - 尝试使用 cron 通过 Facebook PHP SDK 获取最新页面状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20164663/

相关文章:

javascript - 如何获取 Facebook cookie? (javascript)

node.js - 创建 OAuth API 时的应用程序 token / secret

javascript - 如何从 Facebook 群组获取我所有帖子的列表

php - 无法连接到 graph.facebook.com 端口 443 : Network unreachable

php - 合并 facebook 登录,使用 facebook php-sdk (v.3.0.0),带有 session 和 cookie

iphone - iOS 中的安全警告 :"Please treat the URL above as you would your password and do not share it with anyone.

javascript - facebook javascript sdk 登录不适用于 iOS/移动设备的最佳实践

objective-c - 用于解析 html 的正则表达式;

java - 如何将 facebook 响应日期转换为 unix 时间戳

Facebook App - 获取总用户数