[CakePHP] Facebook ページ内でいいね!判定
魁皇引退・・・泣けるぜ・・・。みなさんこんにちは nakamura です。
Facebook 関連の案件も増えてきた今日この頃、Facebook ページに対していいね!しているかしていないかで表示の切り替えをしたいという要件がありました。処理的には何も難しくはないのですが備忘録もかねて記事にしておきます。
下準備
GitHub 上で公開されている Facebook 公式の PHP SDK を使います。
上記からダウンロードしたソース群を vendors ディレクトリに設置してください。
こんな感じ。
|- app
|- cake
|- vendors
|- facebook
|- src
記述例
ざっくり簡単な記述例です。AppController::beforeFilter に実装する例をご紹介します。
<?php
App::import("Vendor", "facebook/src/facebook");
class AppController extends Controller {
var $Facebook;
var $singned_request;
function beforeFilter() {
// Facebook インスタンス 生成
$this->Facebook = new Facebook(array(
"appId" => "", // Facebook アプリの App ID
"secret" => "", // Facebook アプリのシークレットキー
));
// signed_request 取得
$this->signed_request = $this->Facebook->getSignedRequest();
// signed_request が空だったら(Facebook 経由のアクセスでなければ)404
if (empty($this->signed_request)) {
$this->cakeError("error404");
}
// いいね!済みでなければそれ用の URL にリダイレクト
$liked = false;
if (isset($this->signed_request["page"]["liked"])) {
$liked = $this->signed_request["page"]["liked"];
}
if (!$liked) {
$this->redirect(array(
"controller" => "not_liked",
"action" => "index"
));
}
}
}
以上です。カンターーン!
終わりに
ソーシャルネットワークな API はまだまだ知らないものが多いので、がしがし勉強していきたいと思います!