Facebookアプリ開発に挑戦(その12・Facebookページのウォールに投稿)

  • 投稿日:
  • by
  • カテゴリ:

先日の記事では、ユーザーのウォールにプログラムからメッセージを投稿する方法を紹介しました。
この方法を応用すると、ユーザーのウォールだけでなく、ユーザーが管理しているFacebookページのウォールにメッセージを投稿することもできます。
その方法を紹介します。

1.manage_pageのPermissionを得る

プログラムでFacebookページを操作するには、「manage_page」というPermissionを得ることが必要です。
先日の「OAuth 2.0認証の概要」で解説した方法(Client-side flow)か、Server-side flowを使って、manage_pageのPermissionがあるアクセストークンを取得します。

2.Facebookページごとのアクセストークンを得る

次に、1.で得たアクセストークンを使って、以下のようなアドレスにアクセスします。

https://graph.facebook.com/me/accounts?access_token=アクセストークン

すると、以下のようなJSONの文字列が返されます。

{
   "data": [
      {
         "name": Facebookページの名前,
         "category": Facebookページのカテゴリ,
         "id": FacebookページのID,
         "access_token": Facebookページにアクセスするためのアクセストークン
      },
      {
         "name": Facebookページの名前,
         "category": Facebookページのカテゴリ,
         "id": FacebookページのID,
         "access_token": Facebookページにアクセスするためのアクセストークン
      },
      ・・・
}

この情報から、個々のFacebookページにアクセスする際のアクセストークンが分かります。

3.Facebookページのウォールに投稿する

FacebookページのIDと、それに対応するアクセストークンが分かれば、それらの情報を使って、Facebookページのウォールにメッセージを投稿することができます。
投稿するには、POSTプロトコルで以下のようなアドレスにアクセスします。

https://graph.facebook.com/FacebookページのID/feed

また、POSTの際のパラメータとして、以下の各情報を渡します。

パラメータ名内容
access_tokenFacebookページにアクセスするためのアクセストークン
messageメッセージの本文
pictureメッセージに画像を添付する場合は、その画像のアドレス
linkメッセージから他のページへのリンクする場合は、そのリンク先のアドレス
nameメッセージから他のページへのリンクする場合は、そのリンク先のページの名前
captionメッセージから他のページへのリンクする場合は、そのリンク先に関するキャプション(サイト名など)
descriptionメッセージから他のページへのリンクする場合は、そのリンク先のページの概要

4.Facebookページのウォールに投稿するプログラム

Facebookアプリ開発に挑戦(その11・Graph APIでウォールに投稿)」の記事で、ユーザーのウォールに投稿するPHPのプログラムの例を挙げました。
このプログラムを一部書き換えることで、Facebookページのウォールに投稿することもできます。

書き換える箇所は、以下の2か所です。

  • 2行目の「$token = 'アクセストークン';」で、アクセストークンとして、Facebookページにアクセスするためのアクセストークンを指定します。
  • 6行目の「curl_setopt($ch, CURLOPT_URL, 'https://graph.facebook.com/me/feed');」で、URL内の「me」を、FacebookページのIDに置き換えます。