Facebookページの投稿を取得する

FacebookのGraph APIを使って、Facebookページの投稿を取得してみます。
今回使用しているGraph APIのバージョンは2.8です。

アプリIDの作成

Facebook Developersのアカウントにログイン後、Facebook Developerの右上のアプリの作成をクリックします。
Facebook Developersへの登録がまだの方は、こちらの記事から登録を行ってください。

モーダルが表示されるので、各項目を入力してアプリID作成ボタンをクリックします。

セキュリティチェックが表示されるので入力します。

これでアプリIDが作成できました。
 

アクセストークンの取得とGraph API Explorerでの実行テスト

アプリID作成後、上部にあるツール&サポートをクリックします。

Access Token Toolをクリックします。

App Tokenの項目をコピーしておきます。

先ほどのツール&サポートの画面に戻り、Graph API Explorerをクリックします。

Graph API Explorerでは、APIの実行テストを行うことができます。
今回はこちら(https://www.facebook.com/frst.joqr/)のFacebookページの投稿内容を取得してみます。
アクセストークンに先ほどコピーしたApp Tokenを貼り付け、その下のGET /v2.8/ 以降に以下の形で入力します。

【appID】/feed

appIDの部分に取得したいFacebookページのappIDを入力します。
今回の場合、以下のように入力します。

frst.joqr/feed

これで右側の送信をクリックします。

取得内容が表示されました。
取得する項目をカスタマイズしたい場合、左のフィールドを検索から行うことができます。

+アイコンをクリックすると項目を選択できるので、取得したい項目を選びます。

今回は例として、id,created_time,message,link,pictureを選択してみます。
選択後、右側の送信を再度クリックします。

選択した項目が反映した状態で取得し直すことができました。

 

サイトへの表示

先ほどテスト表示してみたjsonを実際に取得して、ページ上に表示させてみます。
jsonは以下のURLで取得することができます。

https://graph.facebook.com/v2.8/【appID】/feed?access_token=【アクセストークン】

取得する項目をカスタマイズしたい場合、パラメータに値を指定してください。
今回はid,created_time,message,from,pictureを指定してみます。

https://graph.facebook.com/v2.8/【appID】/feed?fields=id,created_time,message,from,picture&access_token=【アクセストークン】

取得する際の注意点として、JavaScriptでjsonを直接取得しようとすると、コード上のURLからアクセストークンが見えてしまいます。
アクセストークンが他者に見えてしまうとセキュリティ的によくないので、今回はjsonデータをPHPで取得して、その後にJavaScriptで表示させてみます。

まずはPHPでjsonを取得して、整形して表示させてみます。

get.php

<?php
$accessToken = 'アクセストークンをここに入れる'; // アクセストークン(App Token)
$appId = 'app IDをここに入れる'; // app ID

$url = 'https://graph.facebook.com/v2.8/' . $appId . '/feed?fields=id,created_time,message,from,picture&access_token=' . $accessToken;
$jsonData = file_get_contents($url);

// jsonデータの整形・出力
// paging内にアクセストークンが含まれてしまうので除外する
$json = json_decode($jsonData, true);
echo json_encode($json['data']);

コメントにも記載していますが、取得したjsonをそのまま出力してしまうとpagingの項目にアクセストークンが含まれてしまうので、dataの項目内のみ出力するようにしています。
Facebookページのjson取得のデモページ

次にPHPで取得・整形した内容をJavaScriptで表示させてみます。

HTML

<div id="output"></div>

JavaScript

$(function() {
	var facebookId = '127688557305660';
	$.ajax({
		url: 'get.php',
		dataType: 'json',
		success: function(data) {
			console.log(data);
			var insert = '<ul>';
			for (var i = 0; i < data.length; i++) {
				if(data[i]['from']['id'] === facebookId) {
					insert += '<li>';
					insert += '<div>id:' + data[i]['id'] + '</div>';
					insert += '<div>created_time:' + data[i]['created_time'] + '</div>';
					if(data[i]['message'] !== undefined) {
						insert += '<div>message:' + data[i]['message'] + '</div>';
					}
					if(data[i]['picture'] !== undefined) {
						insert += '<div>picture:' + '<img src="' + data[i]['picture'] + '"></div>';
					}
					insert += '</li>';
				}
			};
			insert += '</ul>';
			$('#output').append(insert);
		}
	});
});

表示時にFacebook IDで絞り込みを行っています。
Facebookページの投稿を取得するデモページ

今回はjsonの取得をPHP、表示部分をJavaScriptで行いましたが、表示部分もPHPで行ってしまったのでも問題ありません。
 

【参考サイト】

 

このエントリーをはてなブックマークに追加

関連記事

コメントを残す

メールアドレスが公開されることはありません。
* が付いている欄は必須項目です

CAPTCHA


コメントが承認されるまで時間がかかります。

2024年12月
1234567
891011121314
15161718192021
22232425262728
293031