【Facebook API】ページへ投稿するPHPスクリプトの例|SDKの利用方法・自動投稿など

今回は、Facebookページを管理するGraph API(グラフAPI)を利用し、Facebookページへ投稿する例となります。
【PHP】グラフAPIでFacebookページへ投稿する例
例では、Facebook SDK for PHPを利用したスクリプトをコマンドラインから実行し、Facebookページへ投稿を行います。
Facebook グラフAPIの認証情報を確認
グラフAPIのリクエストで必要となる次の認証情報を確認します。
アプリID・app secretを確認
Facebook for Developers にAPIを利用するFacebookアカウントでログインし、利用するアプリから以下の認証情報を確認します。
- アプリID
- app secret
ページアクセストークンを取得
グラフAPIのリクエストで必要となるページアクセストークンを生成します。グラフAPIでFacebookページに投稿する場合、アクセス許可には次のオプションを追加します。
- pages_manage_posts
- pages_read_engagement
- pages_show_list
ページアクセストークンを生成する方法については、以下のリンク先を参考にしてみてください。
また、アクセストークンには短期と長期があります。長期のページアクセストークンを取得する方法については、以下のリンク先を参考にしてみてください。
Facebook SDK for PHPをComposerでインストール
まずは、プロジェクトのフォルダを作成します。
そして、ComposerでFacebook SDK for PHPをインストールするため、プロジェクトのルートディレクトリにcdコマンドで移動し、以下のコマンドを実行します。
composer require facebook/graph-sdk
PHPライブラリの依存関係を管理するComposerをMacで利用する方法については、以下のリンク先を参考にしてみてください。
Facebookページへ投稿をするPHPスクリプトを作成
プロジェクトのルートディレクトリにPHPファイルを作成し、以下のソースコードを記述します。コード内のxxxxxxxxの箇所には、確認したグラフAPIの認証情報をそれぞれ指定します。
例では、スクリプトを実行すると、Facebookページに「テスト投稿」のテキストと「example.com」のリンクを投稿します。
<?php
// Facebook SDK for PHPを利用するためComposerのautoload.phpを読み込み
require_once __DIR__ . '/vendor/autoload.php';
// グラフAPIの呼び出しで利用する認証情報。xxxxxxxxの箇所にそれぞれの情報をセット
const FB_APP_ID = 'xxxxxxxx'; // アプリID
const FB_APP_SECRET = 'xxxxxxxx'; // app secret
const FB_ACCESS_TOKEN = 'xxxxxxxx'; // ページアクセストークン
// Facebookクラスのインスタンスを作成
$fb = new \Facebook\Facebook([
'app_id' => FB_APP_ID,
'app_secret' => FB_APP_SECRET,
]);
try {
// Facebookページへ投稿
$message = 'テスト投稿'; // 投稿内容
$url = 'example.com'; // 投稿に含めるリンク
$response = $fb->post('/me/feed', [
'message' => $message,
'link' => $url,
], FB_ACCESS_TOKEN);
} catch(\Facebook\Exceptions\FacebookResponseException $e) {
echo 'Graph returned an error: ' . $e->getMessage();
exit;
} catch(\Facebook\Exceptions\FacebookSDKException $e) {
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
コマンドラインから作成したファイルを実行するには、ファイルのあるディレクトリに移動して、次のコマンドを実行します。
php ファイル名
WordPressの投稿を自動投稿する場合
上記の例は、Facebookページへ投稿する簡単な例でしたが、WordPressの投稿の情報を自動投稿する場合は、WordPressからデータを取得して投稿内容に指定し、PHPファイルをサーバーのcronに設定します。
詳しくは以下のリンク先を参考にしてみてください。
PHPコードの簡単な説明
以下、例のソースコードの簡単な説明となります。
ライブラリを読み込みインスタンスを作成
コード2行目からの以下の箇所では、Facebook SDK for PHPのライブラリを読み込み、APIリクエストで利用するFacebookクラスのインスタンスを作成しています。
// Facebook SDK for PHPを利用するためComposerのautoload.phpを読み込み
require_once __DIR__ . '/vendor/autoload.php';
// グラフAPIの呼び出しで利用する認証情報。xxxxxxxxの箇所にそれぞれの情報をセット
const FB_APP_ID = 'xxxxxxxx'; // アプリID
const FB_APP_SECRET = 'xxxxxxxx'; // app secret
const FB_ACCESS_TOKEN = 'xxxxxxxx'; // ページアクセストークン
// Facebookクラスのインスタンスを作成
$fb = new \Facebook\Facebook([
'app_id' => FB_APP_ID,
'app_secret' => FB_APP_SECRET,
]);
Facebookページへ投稿
コード16行目からの以下の例外処理では、上記のインスタンスを利用してAPIリクエストを行い、成功するとFacebookページへ指定したテキストとリンクを投稿します。
try {
// Facebookページへ投稿
$message = 'テスト投稿'; // 投稿内容
$url = 'example.com'; // 投稿に含めるリンク
$response = $fb->post('/me/feed', [
'message' => $message,
'link' => $url,
], FB_ACCESS_TOKEN);
} catch(\Facebook\Exceptions\FacebookResponseException $e) {
echo 'Graph returned an error: ' . $e->getMessage();
exit;
} catch(\Facebook\Exceptions\FacebookSDKException $e) {
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}