PHPで複数の画像をfacebookに投稿する方法

[参考記事] facebook APIを使用する時にfacebook Appsでアプリを登録するまでの流れ
[参考記事] PHPでのfacebookアプリの認証処理(APIを使うユーザー認証)
[参考記事] PHPでfacebookのフィード(ウォール)に投稿する方法
[参考記事] PHPでfacebook投稿時に公開範囲を指定する方法

複数の画像を投稿するにはアルバムを使います。

defined("FACEBOOK_APP_ID") || define("FACEBOOK_APP_ID", 【App ID】);
defined("FACEBOOK_SECRET") || define("FACEBOOK_SECRET", 【App Secret】);

$facebook = new Facebook(array(
  'appId' => FACEBOOK_APP_ID,
  'secret' => FACEBOOK_SECRET,
));
$uid = $facebook->getUser();

if(!empty($_GET['error_code'])){
  echo 'facebook認証エラー';
  exit;
}elseif(!$uid){
  $params = array(
    'redirect_uri' => "http://" . $_SERVER["HTTP_HOST"] . $_SERVER["SCRIPT_NAME"],
    'scope' => 'publish_stream',
  );
  $fb_login_url = $facebook->getLoginUrl($params);
  header("Location: " . $fb_login_url);
  exit;
}

try {
  $me = $facebook->api('/me');

  // アルバムを作る場合
  $album=$facebook->api('me/albums','POST',array( //アルバム作る
    "name" => 'アルバム名',
    "message" => 'このメッセージが投稿されます。'
  ));
  if(empty($album['id'])){
    die('Facebookの投稿に失敗しました。');
  }
  $albumID = $album['id']; // アルバムID


  $facebook->setFileUploadSupport( true );

  // これを画像の枚数分繰り返します。
  $result = $facebook->api("/".$albumID."/photos", "POST", array(
    "message" => '画像のキャプションです。',
    "source" => '@'.【画像のパス】,
  ));
  if(empty($result['id'])){
    die('Facebookの投稿に失敗しました。');
  }

} catch (FacebookApiException $e) {
  throw new Exception($e->getMessage());
}

画像が1枚の時には、タイムラインには画像のキャプションが本文として投稿されます。

画像が2枚の時には、タイムラインには1つの投稿ではなく、2つの画像それぞれの書き込みとして投稿されます。

画像が3枚以上の時には、アルバムでまとめて投稿されます。
タイムラインで大きく表示される画像やアルバム一覧のサムネイルに使われる画像は、アルバムの中で最後に投稿された画像です。

関連記事

スポンサーリンク

br要素があるときに縦方向マージンを少なく解釈する

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る