murahashi

Facebook 3枚連続で画像投稿するよ(PHP)

Facebook のアルバム作成+画像を投稿する PHP スクリプトのご紹介です。

[投稿] ボタン押下で画像を 3枚アップしたいアプリがあったのですが、
Flash だと 1アクション 1画像しかアップできなかった(つまり、[投稿] ボタン押下で 1画像しかアップできなかった)ので
投稿部分のみ PHP にしました。
それをまるっと公開ですー。

ファイル構成

/
├ img_post.php      ←これが投稿 PHP
├ base_facebook.php
├ facebook.php
└ fb_ca_chain_bundle.crt

※「img_post.php」以外は facebook/php-sdk – GitHub より取得してください。

img_post.php に渡される値

$_FILES['img_1'] // 画像1
$_FILES['img_2'] // 画像2
$_FILES['img_3'] // 画像3
$_POST['access_token'] // アクセストークン

img_post.php

<?php
  require_once('facebook.php');

  // 画像投稿順設定。$_FILES の名前と合わせてください。
  // img_1 から順番に画像が投稿されます。
  // PC のニュースフィードでは 1番目に投稿された画像が大きく表示されます。
  // (2012年2月現在)
  $ary_post_order = array('img_1', 'img_2', 'img_3'); 

  // アクセストークン
  $access_token   = $_POST['access_token'];

  $config = array(
    'appId'       => '【App ID/API Key】',
    'secret'      => '【アプリの秘訣】',
    'fileUpload'  => true,
  );

  $facebook = new Facebook($config);

  // Set a new access token, by first getting it via means other than the SDK
  $facebook->setAccessToken($access_token);
  $user_id = $facebook->getUser();

  if( $user_id ) {
    // create album
    $album_details = array(
      'message' => '【アルバムの説明】',
      'name'    => '【アルバムの名前】',
     );
    $ret_obj_album = $facebook->api('/me/albums', 'post', $album_details);
    $album_id = $ret_obj_album['id'];

    // Upload to a user's profile.
    try {
      $cnt = 0;
      foreach ( $ary_post_order as $key ) {
        $ret_obj = $facebook->api('/' . $album_id . '/photos', 'POST', array(
                                         'source' => '@' . $_FILES[$key]['tmp_name'],
                                         )
                                      );
        if ( $ret_obj['id'] ) { $cnt++; }
      }
      echo ( $cnt == 3 ) ? 1 : -1;
    } catch(FacebookApiException $e) {
        echo -2;
    }
  } else {
    echo -3;
  }
?>

● 14行目【App ID/API Key】
アプリ管理画面から「App ID/API Key」を取得して差し替えてください。

● 15行目【アプリの秘訣】
アプリ管理画面から「アプリの秘訣」を取得して差し替えてください。

● 16行目 ’fileUpload’ => true,
「true」を設定してください。ここ【重要】。

● 28行目【アルバムの説明】
アルバムに説明をつける場合は文言をセットしてください。

● 29行目【アルバムの名前】
アルバムにつける名前をセットしてください。

● 39行目 ’source’ => ‘@’ . $_FILES[$key]['tmp_name'],
「@」を入れてください。ここ【重要】。

● 44行目
3枚無事にアップできたら「1」を出力します。
失敗したらマイナス値を出力しています。
エラー処理はお使いのアプリにあわせて変えてくださいね!

参考

facebook/php-sdk – GitHub
https://github.com/facebook/php-sdk

api – Facebook開発者
https://developers.facebook.com/docs/reference/php/facebook-api/

関連記事

TAM テクニカルチーム | Facebookアプリから写真を投稿する(Flash) | Tips Note
http://tam-tam.co.jp/tipsnote/actionscript/post2103.html

備考

Facebook のデータ取得は JSON を使っています。
上記コード上ではありませんが、base_facebook.php で使われています。
PHP のバージョンが 5.2.0 以上の場合は予めインストールされていますが
それ以下のバージョンでは使えない状態かもしれません。確認してくださいね!
画像のアップロードには CURL が使われています。
こちらもサーバによっては使えなかったりするので、要確認。
いじょ。

新しいウェブ体験を作ろう TAMのPWA開発
お問い合わせはこちら