公開日:2013.05.08

Facebook PHP-SDK + CodeIgniterでログイン処理を実装する方法

テクログ

CodeIgniterを使用してFacebook PHP-SDK でログイン処理を実装する手順を

記載します。

 

1.PHP版のFacebook公式SDKをダウンロードする。

 

2.ダウンロードしたsrcフォルダ内のfacebook.php、base_facebook.php、fb_ca_chain_bundle.crtの3ファイルを、CodeIgniterのlibrariesディレクトリにコピーする。

 

3.Facebookの開発者向けサイトでFacebookアプリの登録を行い、「アプリID / APIキー」「アプリのシークレットキー」を取得する。

 

4.config/social_oauth.phpを作成する。


$config["social_oauth"] = array (
"facebook" => array (
"app_id" => "アプリID / APIキー"
, "app_secret" => "アプリのシークレットキー"
, "callback_url" => "Facebook認証後に呼び出されるURL(callback.phpが呼ばれるURL)"
),
);

5.controllers/token.phpを作成する。


class Token extends CI_Controller
{
?function __construct ()
?{
??parent::__construct ();
??$this->load->library ("facebook");
?}

?public function index ()
?{
??// Facebook情報取得
??$facebookInfo = $this->config->item ("facebook", "social_oauth");

??// APP_ID取得
??$appId = $facebookInfo["app_id"];

??// APP_SECRET取得
??$appSecret = $facebookInfo["app_secret"];

??// CALLBACK_URL取得
??$callbackUrl = $facebookInfo["callback_url"];

??// インスタンス生成
??$fb = new Facebook (array ("appId" => $appId, "secret" => $appSecret));

??// 認証用URL取得してredirect
??$authURL = $fb->getLoginUrl (array ("scope" => "取得したいパーミッション"
, "redirect_uri" => $callbackUrl));
??header ("Location: " . $authURL);
?}
}

※取得したいパーミッションはこちらを参照して設定してください。

 

6.controllers/callback.phpを作成する。


class Token extends CI_Controller
{
?function __construct ()
?{
??parent::__construct ();
??$this->load->library ("facebook");
?}

?public function index ()
?{
??// Facebook情報取得
??$facebookInfo = $this->config->item ("facebook", "social_oauth");

??// APP_ID取得
??$appId = $facebookInfo["app_id"];

??// APP_SECRET取得
??$appSecret = $facebookInfo["app_secret"];

??// codeの取得チェック
??if (!isset ($_REQUEST["code"])) {

???// エラー処理
???echo "facobook側でエラー(キャンセル含む)";
???exit;
??}

??// インスタンス生成
??$fb = new Facebook (array ("appId" => $appId, "secret" => $appSecret));
??$userId = $fb->getUser ();

??// ユーザー情報取得
??$user = $fb->api ("/me", "GET", array ("locale" => "ja_JP"));
??$userId = $user["id"];
??$name = $user["name"];
??$userName = $user["username"];
??$usemail = $user["email"];
??$birthday = explode ("/", $user["birthday"]);
??$year = $birthday[2];
??$month = $birthday[0];
??$day = $birthday[1];

??// ユーザ権限情報取得
??$pm = $fb->api ("/" . $user["id"] . "/permissions", "GET", array ("access_token" => $appId . "|" . $appSecret));

??// ユーザ権限情報チェック(ここではpublish_streamの存在チェック)
??if (!isset ($pm["data"][0]["publish_stream"])) {

???// エラー処理
???echo "facobook側でエラー(キャンセル含む)";
???exit;
??}

??// 画面遷移
??$this->load->view ("success");
?}
}

 

7.view/login.php、view/success.phpを作成する。

login.phpはtoken.phpを呼び出すリンクがあればOKです。

 

 

これでFacebookのログイン処理ができました。

色々活用してみてください。

この記事を書いた人

core-corp

入社年2010年

出身地東京都

業務内容インフラ

特技または趣味ドライブ

core-corpの記事一覧へ

テクログに関する記事一覧