FacebookSDKがCakePHPのSessionを使うようにする

cakePHPでFacebookログイン[1/2] - もぎゃろぐで書いたとおり、 FacebookSDKをつかうと簡単にfacebookログインを実装することができます。,

FacebookSDKは、この簡単実装を実現するために、内部で$_SESSIONを呼び出して、accessTokenや CSRF対策のstate変数を保存しています。 この実装は、単純なWEBサーバであれば困らないのですが、複数のWEBサーバで分散処理するためにセッションをDBに保存する、というような設定をしている場合、 このままだと動かないことが予想されます。

CakePHPは、そういうときのためにセッションをデータベースに保存したりすることができるようになっていますので、FacebookSDKの変数も、CakePHPのセッションを使ってもらうようにしたいところです。

facebookのエンジニアの人たちは優秀なので、こういう用途も想定してSDKを書かれたようです。

facebookSDKのFacebookクラスは、ほとんどの実装がbase_facebook.phpのBaseFacebookクラスで実装されて、上記セッション変数の処理だけが、facebook.phpのFacebookクラスで実装されています。
なので、facebook.phpをコピーしたcakeFacebook.phpを作って、$_SESSIONの部分をcakePHPのCakeSessionに書き換えたCakeFacebookクラスを用意すれば、FacebookSDKもcakePHPの設定に従ってくれるようになります。
ということで出来上がったのがこちらになります。 facebook.phpと同じディレクトリに配置して
App::import('Vendor', 'facebook/cakeFacebook');

$this->facebook = new CakeFacebook(array(
'appId' => Configure::read('facebook.appid'),
'secret' => Configure::read('facebook.secret'),
));
という具合にして使います。あとは通常のFacebookクラスと同じ使い方でOKです。
カテゴリ:

トラックバック(0)

このブログ記事を参照しているブログ一覧: FacebookSDKがCakePHPのSessionを使うようにする

このブログ記事に対するトラックバックURL: http://mogya.com/mt/mt-tb.cgi/1614

コメントする


画像の中に見える文字を入力してください。

このブログ記事について

このページは、 もぎゃが 2013年4月18日 02:02に書いたブログ記事です。

ひとつ前のブログ記事は「 cakePHPでFacebookログイン 」です。

次のブログ記事は「 [JavaScript]変数の存在確認 」です。

最近のコンテンツは インデックスページ で見られます。過去に書かれたものは アーカイブのページ で見られます。

Powered by
Movable Type