PHPプログラミング

最終更新日:
公開日:

レシピ

Facebook PHP向けSDK

Facebookページのタイムライン(フィード)を取得

GraphAPIを使って、Facebookページに投稿されたタイムライン(フィード)を取得します。

この記事のポイント

  • Facebookページの投稿データを取得する
  • 取得するデータをパラメータで条件指定する

目次

GraphAPI /page/feed

今回はSDKからGraphAPIに用意されている「/page/feed」を呼び出し、Facebookページの投稿データを取得します。
投稿のメッセージや投稿された時間といった基本データから、投稿者の情報や一緒に投稿された画像など関連データを色々取得することが可能です。

PHP向けSDKの基本的な使い方については、「Facebookページの基本データを取得」をご覧ください。

投稿データを取得

まずは「/page/feed」を使って、基本データのみを取得してみましょう。
次のコードを使用します。

クラスを初期化するときに渡す情報は適宜置き換えてください。
また、今回はテスト用にGrayCodeのFacebookページから情報を取得することを前提とします。

コード例

<?php
require_once 'php-graph-sdk-master/src/Facebook/autoload.php';

$fb = new Facebook\Facebook([
	'app_id' => 'アプリID',
	'app_secret' => 'App Secret',
	'default_graph_version' => 'v2.7',
	'default_access_token' => 'アプリ用アクセストークン'
]);

try {
	$res = $fb->get('/graycodepage/feed');

} catch( Facebook\Exceptions\FacebookSDKException $e) {
	var_dump($e);
	exit();
}

var_dump($res->getDecodedBody());

取得したデータの出力例

GraphAPIからのデータ取得結果

投稿データを配列として受け取ることができます。
data」中にある投稿データを1つずつ見ていくと、「内容テキスト」「投稿日時」「ID」が取得できていることが分かります。

fieldsパラメータを使ってみる

基本的な投稿データは取得できたので、次はfieldsパラメータを指定してみます。
ここでは、「投稿名」「投稿者」「内容テキスト」「投稿画像」を取得していきます。

先ほどのコードから、get関数の指定にfieldsパラメータの指定のみ追加して実行します。

コード例

$res = $fb->get('/graycodepage/feed?fields=name,from,message,picture');

取得したデータの出力例

fieldsパラメータを指定した後の取得結果

指定したパラメータの意味は次のようになります。

  • name – 投稿名
  • from – 投稿者データ(配列)
  • message – 投稿内容
  • picture – 画像リソースのURL

指定できるパラメータの一覧は公式リファレンス「Post」の「Fields」で参照できます。
Post – Facebook GraphAPIリファレンス(英語)

データの取得数を指定

投稿データの取得件数は初期設定だと25件ですが、limitパラメータで調整可能です。

先ほどのコードにlimitパラメータを追加して実行します。
fieldsパラメータの後ろに追加するので、「&」で区切って指定してください。
ここでは投稿を1件だけ取得する指定にします。

コード例

$res = $fb->get('/graycodepage/feed?fields=name,from,message,picture&limit=1');

取得したデータの出力例

limitパラメータを指定した後の取得結果

limitパラメータは1件〜最大100件まで指定可能です。
実際の使い方は1ページ辺りの表示件数を指定し、投稿データと一緒に渡されるpaging配列の「previous」「next」を使ってページングを実装します。

以上、GraphAPIの「/page/feed」を使ったFacebookページのタイムラインデータ取得方法でした。

こちらの記事は役に立ちましたか?

ありがとうございます。
もしよろしければ、あわせてフィードバックや要望などをご入力ください。

コメントありがとうございます!
運営の参考にさせていただきます。