【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;
}

参考サイトなど

コメント投稿コメント投稿欄を開く

コメントは項目欄(*は必須項目)を入力し、「コメントを送信」ボタンをクリックしてください。 (メールアドレスは公開されることはありません。コメントの公開は承認制となります。)

また、多忙によりコメントには返信できない場合があります。

Twitterで返信する場合はこちらから。