PHPでfacebookのフィード(ウォール)に投稿する方法

メッセージのみを投稿する場合
画像リンク付きで投稿する場合式
facebookに画像ファイルをアップロードして投稿する場合

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

投稿する処理の前に、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');
  $result = $facebook->api("/me/feed", "post", array(
    "message" => 'このメッセージが投稿されます。',
  ));

  if(empty($result['id'])){
    die('Facebookの投稿に失敗しました。');
  }
} catch (FacebookApiException $e) {
  throw new Exception($e->getMessage());
}

画像リンク付きで投稿する場合

try {
  $me = $facebook->api('/me');
  $result = $facebook->api("/me/feed", "post", array(
    "message" => 'このメッセージが投稿されます。',
    "picture" => '画像のURL',
    "link" => '画像リンク先のURL',
    "name" => 'リンク名',
    "caption" => '説明文',
    "description" => '詳細文',
  ));

  if(empty($result['id'])){
    die('Facebookの投稿に失敗しました。');
  }
} catch (FacebookApiException $e) {
  throw new Exception($e->getMessage());
}



この場合は画像ファイルはfacebookとは違うサーバの画像です。

facebookに画像ファイルをアップロードして投稿する場合

この場合、画像はアルバムに投稿されます。

[参考記事] PHPで複数の画像をfacebookに投稿する方法

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());
}

setFileUploadSupport()を指定しないと、画像はアップロードできず、次のようなエラーが出ます。

OAuthException: (#324) Requires upload file

アルバムIDはアルバムのURLからわかります。

set=a.【アルバムID】.1111111.【ユーザーID】

「タイムラインの写真」にアップロードする場合は、このアルバムIDを指定します。

アルバムIDを『 me 』にすると、アルバム名がアプリ名のアルバムが生成されて、そこにアップロードされます。

$result = $facebook->api("/me/photos", "post", array(

関連記事

スポンサーリンク

MAX関数 最大値を求める

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

上に戻る