Facebookアプリ開発に挑戦(その11・Graph APIでウォールに投稿)

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

Graph APIにはさまざまな機能がありますが、ユーザーのウォールにメッセージを投稿することもできます。
その方法を紹介します。

1.投稿の手順

Graph APIでユーザーのウォールにメッセージを投稿するには、POSTプロトコルで以下のアドレスにアクセスします。

https://graph.facebook.com/me/feed

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

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

2.投稿結果の確認

投稿に成功すると、POSTリクエストに対するレスポンスボディとして、以下のようなJSON形式の文字列が返されます。

{"id":"ユーザーのID_メッセージのID"}

一方、アクセストークンが正しくないなどで投稿に失敗した場合は、以下のような文字列が返されます。

{"error":{"type":"エラーのタイプ","message":"エラーメッセージ"}}

これらの文字列の内容をチェックして、投稿に成功したかどうかを判断します。

3.事例

PHPでユーザーのウォールに投稿するには、以下のようなコードを実行します。

<?php
$token = 'アクセストークン';
$ch = curl_init();
$params = 'access_token=' . urlencode($token);
$params .= '&message=' .urlencode('送信するメッセージ');
curl_setopt($ch, CURLOPT_URL, 'https://graph.facebook.com/me/feed');
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$resp = curl_exec($ch);
curl_close($ch);
if ($resp === false) {
  通信エラー時の処理
}
else {
  $resp = json_decode($resp);
  if (isset($resp->id)) {
    投稿に成功した時の処理
  }
  else if (isset($resp->error)) {
    投稿に失敗した時の処理
  }
}
?>

2行目の「アクセストークン」は、取得済みのアクセストークンに置き換えます。
また、5行目の「メッセージ」は、送信したいメッセージに置き換えます。

通信自体に失敗した場合(Facebookのサーバーに接続できないときなど)は、13行目の「通信エラー時の処理」が実行されます。
また、アクセストークンが正しくないなど、Facebookからエラーが返された時には、21行目の「投稿に失敗した時の処理」が実行されます。
そして、投稿に成功した時には、18行目の「投稿に成功した時の処理」が実行されます。
これらの処理を、ご自分のプログラムに合わせて、適宜書き換えてください。

なお、上記の例では、PHPにcURLがインストールされていることが必要です。
cURLのインストール手順は、PHPのサイトのcURLのページを参照してください。