タグ: Opauth

FuelPHP+Authパッケージ&Opauthでopauth/facebookのforkしたものを使う

FuelPHP上で認証機能を実装するために、Authパッケージ+Opauthドライバを利用する。

  1. はじめに – Opauth – Auth Package – FuelPHP Documentationを参考に、composerでopauth/opauth,opauth/facebookパッケージをインストール
  2. Opauth Controller example – Auth Package – FuelPHP Documentationを参考に、Authコントローラーを作成
  3. 開発者向けFacebookでFacebookアプリを作成
  4. 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を利用することにしました。

  1. composer.jsonを編集して
    repositoriesに

       { "type": "vcs", "url": "https://github.com/TippingCanoe/facebook" }
    

    を追加
    requireのopauth/facebookを

      "opauth/facebook": "dev-master"
    

    に変更したのち、composer updateを実行

  2. fuel/vendor/opauth/facebook/FacebookStrategy.phpを開いて、
    https://github.com/TippingCanoe/facebook/commit/3624b3043bf1ca5b87294aace7fd4df20ee2f8e4#diff-d286e64409257a85e4a8ea5c5f295e48
    の修正が適用されているかを確認

参考