Codeigniterを使ったFacebookアプリのつくりかた
どうもー、eeyanaikaでーす。
というわけで前回から引き続き、PHPフレームワークの一つである「CodeIgniter」を使ったFacebookアプリの作り方を書いていきます。 基本的な思想としてはconfig等への別ファイル化はせず、超シンプルにしています。
controller
FacebookのキャンバスURLに登録しているパスに従い、コントローラーを作成します。
今回登録したキャンバスURLはhttps://example.com/shindan/index.php
なので、Shindanコントローラーのindexメソッドを作ってみます。
コンストラクタで認証処理を行い、User IDが無い場合はFacebookのログイン画面に遷移させます。
<?php /** * ええやん診断ページコントローラ * * @author eeyan */ class Shindan extends CI_controller { /** * @var FacebookアプリID */ const FB_APP_ID = "345689273462046"; /** * @var Facebookアプリシークレットコード */ const FB_APP_SECRET = "3tesvgr537vecu563457ui456liu5457"; /** * @var Facebookアプリ名 */ const FB_APP_NAME = "eeyan_app"; /** * @var Facebook会員ID */ var $user_id = NULL; /** * @var Facebookユーザー情報 */ var $me = NULL; /** * @var Facebook SDK インスタンス */ var $facebook = NULL; /** * コンストラクタ */ function __construct() { parent::__construct(); //---------------------------------------- // 処理前に準備する //---------------------------------------- // third_party直下にFacebookのPHP SDKを配置 require_once APPPATH."third_party/Facebook/facebook.php"; // Facebookクラスのインスタンス生成 $this->facebook = new Facebook(array( "appId" => Shindan::FB_APP_ID, "secret" => Shindan::FB_APP_SECRET, "cookie" => true )); try { // 現在ログイン中のユーザー情報を取得する $this->user_id = $this->facebook->getUser(); } catch (FacebookApiException $e) { // // エラー処理 // } if (!$this->user_id) { // ログインURLを生成 $url = $this->facebook->getLoginUrl(array( "redirect_uri" => "http://apps.facebook.com/".Shindan::FB_APP_NAME, "scope" => "publish_stream" )); // アプリ未登録ユーザーなら facebook の認証ページへ遷移 echo "<script type='text/javascript'>top.location.href = '{$url}';</script>"; exit; } } /** * 初期画面アクション */ function index() { //---------------------------------------- // データを取得する //---------------------------------------- try { // 自分の情報を取得 $this->me = $this->facebook->api('/me'); } catch (FacebookApiException $e) { // // エラー処理 // } //----------------------------------------- // データを設定する //----------------------------------------- $view = array(); $view["user_id"] = $this->user_id; // 会員ID $view["me"] = $this->me; // ユーザー情報 // ビューを指定 $this->load->view("eeyan/index", $view); } }
view
作成したメソッドに対応したビューを作成します。
ビューではコントローラーで渡されたユーザー情報を表示しています。
<!doctype html> <html xmlns:fb="http://www.facebook.com/2008/fbml"> <head> <title>eeyan index</title> </head> <body> <h1>あなたの情報</h1> <?php var_dump($me); ?> </body> </html>
ただ、これいろいろと問題あるんです。
IEとかSafariで動きません。おいおい。
というわけで、次回はこのソースを修正していきたいと思います。