facebook

2012年07月21日

facebook

今更だけどPHPでFacebookアプリ作ったのでメモ。タイトルに日付入れたのは、Facebookアプリ制作やった人なら御存知の通り、Facebookさんがしょっちゅう仕様変更するからです。調べてやっとたどり着いた情報が使えないとか何度あったことか。制作の手順としては、まずHTMLとCSSでデザイン作って、必要ならjQueryとかあてて、最後にPHPを組み込んでいきました。facebook sdk for PHP は
コチラからダウンロードして下さい

今回のアプリの仕様は、
「良いね!押してもらって、アルバム作成して、そこに画像を複数枚投稿する」
という感じです。

ということでまず。いいね!を押さないと先に進めないようにする。

require 'facebook.php'; //facebook php sdkまでのパス。
$facebook = new Facebook(array( //2~5行目は外部化したほうがスマート。
'appId' => 'アプリID',
'secret' => 'シークレットキー',
));
$signedrequest=$facebook->getSignedRequest();

if($signedrequest['page']['liked']) {
//ここに「いいね!」してもらった時のソースを書く
}else{
//ここに「いいね!押して下さい」的なソースを書く
}
こんな感じ。いいね!を押したら勝手にリロードされるので、これで動作します。とっても良い感じ☆

次いで、アルバム作成と画像アップロード。

require 'facebook.php';
$facebook = new Facebook(array(
'appId' => 'アプリID',
'secret' => 'シークレットキー',
'fileupload'=>true
));
$user = $facebook->getUser();

//アルバム作成とアルバムID取得-------------------------------------------------------------
if($user){
try{
$album=$facebook->api('me/albums','POST',array( //アルバム作る
'name'=>'アルバム名',
'message'=>'アルバムのメッセージ。ウォールに書き出される'
));
$albumJSON=$facebook->api('me/albums','GET'); //アルバム一覧のJSONデータを取得
$albumID=$albumJSON["data"][0]["id"]; //アルバム一覧の0番目(最後に作ったアルバム)のidを取得
}catch(FacebookApiException $err){
exit($err);
}
}

//画像を4枚投稿-------------------------------------------------------------------------
$postImgArr=array('1.jpg','2.jpg','3.jpg','4.jpg'); //投稿する画像のパスの配列
$capArr=array('キャプション1','キャプション2','キャプション3','キャプション4'); //画像キャプションの配列
if($user){
for($k=0;$k<4;$k++){ //画像投稿を4回繰り返す
try{
$post=$facebook->api(
$albumID."/photos", //指定アルバムに
"POST", //投稿
array(
"source"=>"@".$postImgArr[$k], //@が大事みたい
"message"=>$capArr[$k] //画像キャプション
));
}catch(FacebookApiException $err){
exit($err);
}
}
}
こんな感じです。アルバム作成の辺りは、アルバム作って全アルバムデータ取得して...って感じなので、結構無駄がある気がします。が、動いているのでおk。しかしこの情報もいつまで有効なのだろうか...怖い...

facebookアプリはわりかし面白いこと出来そうというか、ちゃんと反応が見られるので、作っちゃえば楽しいかもと思います。必要なコード量自体はとても少なくて素晴らしいのだけど、動作が安定しなかったりsandboxモードの信頼性が低かったり、facebookさんのやんちゃぶりに振り回されて、結構気の休まらない開発になりました。

今回のサンプルで作ったもの↓
https://www.facebook.com/ladykaga.jp/app_492566150757081

sarustar at 13:51|PermalinkComments(0)TrackBack(0)このエントリーをはてなブックマークに追加 mixiチェック Clip to Evernote