higehikiのブログ

iPhoneアプリ「ログ雀」の中の人です。

Facebookアプリを作ってみる

今更感が半端ないですが、お仕事なので仕方なく…。
「イイね」を押したら先に進める系のFacebookアプリをタブページ(iframe)で作りました。
詰まったところを備忘録として残しておきます。

SDKの選択とiframe内でのリダイレクト制限

アプリケーションをいつもPHPで書いているので、迷うことなく Facebook SDK for PHP を選択。
実装をちゃちゃっと終わらせて、テストしてみたところ、scopeで設定したパーミッションの取得からその先への画面遷移あたりが上手く動作しない。
リダイレクトに制限があるそうで(´-`;
そのまま Javascript SDKを使うことにしました。
PHP SDKも投稿時などに使ってます。

画像アップロード

画像のアップロード及びウォールへの投稿は、PHP SDKの方で実装したのですが、これまた上手く動かない。
Facebook php SDK 画像アップロード」とかでググった結果では太刀打ち出来ず…

$source = '@' . realpath($source);    // このsourceをcurlで送信すると落ちる
$requestParameters = array(
    'access_token' => $this->facebook->getAccessToken(),
    'message'      => $message,
    'source'       => $source,
);
$this->facebook->setFileUploadSupport(true);
$response = $this->facebook->api('me/photos', 'POST', $requestParameters);

原因を調べたら、美しい解説がありました。
PHP5.5 から curlの仕様が一部変更になったからFacebook SDK使うときは、sourceの指定時に CURLFile インスタンスを生成する必要があるらしいです。
http://philsturgeon.co.uk/blog/2013/08/curlfile-and-the-facebook-sdk-in-php-55

それ以外は以下を参考にさせて頂きました!!
http://tech.kayac.com/archive/facebooksdk.html

この2点以外は概ね上手くいきました。
出始めの頃は仕様もコロコロと変わっていたようで大変だったみたいですね。
今では1日あればできちゃいますね!