FuelPHP+Authパッケージ&Opauthでopauth/facebookのforkしたものを使う
FuelPHP上で認証機能を実装するために、Authパッケージ+Opauthドライバを利用する。
- はじめに – Opauth – Auth Package – FuelPHP Documentationを参考に、composerでopauth/opauth,opauth/facebookパッケージをインストール
- Opauth Controller example – Auth Package – FuelPHP Documentationを参考に、Authコントローラーを作成
- 開発者向けFacebookでFacebookアプリを作成
- fuel/app/config/opauth.phpを作成して
return array( 'Strategy' => array( 'Facebook' => array( 'app_id' => 'App ID', 'app_secret' => 'App Secret', 'scope' => array('email') ), ) );
としてログイン画面を作成しましたが、Facebookからのコールバックでパラメータからメールアドレスが取得できませんでした。
これは、FacebookAPIの仕様変更によるもので、対応するにはopauth/facebook内のコードを編集する必要があります。
今回は、opauth/facebook内のコードを直接編集するのではなく、opauth/facebookをForkしてFacebook APIに対応したリポジトリを利用します。
リポジトリの選択は、「Network Graph · opauth/facebookから、オリジナルの最先端にある1.0ブランチから派生しているもので、派生先のmasterブランチに修正がコミットされたのが最近のもの」として、TippingCanoe/facebookを利用することにしました。
- composer.jsonを編集して
repositoriesに{ "type": "vcs", "url": "https://github.com/TippingCanoe/facebook" }
を追加
requireのopauth/facebookを"opauth/facebook": "dev-master"
に変更したのち、composer updateを実行
-
fuel/vendor/opauth/facebook/FacebookStrategy.phpを開いて、
https://github.com/TippingCanoe/facebook/commit/3624b3043bf1ca5b87294aace7fd4df20ee2f8e4#diff-d286e64409257a85e4a8ea5c5f295e48
の修正が適用されているかを確認
参考
- OpauthでFacebookログイン|FuelPHP学習帳
- fuelphpでのfacebookログイン実装の際にemailも取得する設定 – とりあえずphpとか
- Repositories – Composer
- CakeDC – CakePHP Facebook login using CakeDC Users Plugin](http://www.cakedc.com/jorge_gonzalez/2015/10/02/cakephp_facebook_login_using_cakedc_users_plugin)