LoginSignup
10
10

More than 5 years have passed since last update.

HybridAuthを利用したOAuth認証(Facebook編)

Last updated at Posted at 2014-11-10

背景

お客様依頼にて、HybridAuthを利用してOAuth認証を実現したいという要望があり、実現方法を調査した。

環境

サーバー環境

  • OS:CentOS6.5
  • クラウド:AWS
  • PHP5.6
    • Composerを利用

実装

基本的には以下のページを読み進めて行けば実現可能だが、 (1)英語であること(2)OAuthの仕組み(流れ)がややこしく、実装経験がないと詰まりやすい という点に注意。

Facebook Authentication - HybridAuth

Facebook Developers上の設定

Facebook Developers にアクセスし、ブラウザからアプリケーションの設定を実施する必要がある。

設定の流れは大きく以下のとおり。

  1. アプリケーションの登録を行う
  2. 実際にOAuth認証機能を設置するサーバーのURLを設定する
  3. 登録後、App IDApp Secretを取得する
  4. App IDApp Secretは後の手順で利用するために、必ず控えておくこと

Hybridauthのインストール

Composerを利用してセットアップするのが楽ちん。

以下の作業はドキュメントルートで実施。

1.Composerのサイトから composer.pharをダウンロードしてくる。

2.composer.jsonというファイルを用意し、以下の内容を記述する。

{
    "name": "genzouw/hybridauth_example",
    "authors": [
        {
            "name": "genzouw",
            "email": "genzouw@gmail.com"
        }
    ],
    "require": {
        "hybridauth/hybridauth": "2.2.2"
    }
}

3.コマンドラインから、以下のコマンドを実行する。

$ php composer.phar install

といろいろ書いたが、ドキュメントルートに以下のファイルを展開したものを配置するだけでも良い。

4.最後にindex.phpauth.phpというファイルを作成し、以下の内容を記述する。

ここでの注意は、#Server IP#には自分のサーバーのIPアドレス(もちろんドメインでもOK)、#App ID#, #App Secret#**には先程のFacebookページで設定した最後のページに表示されている値をセットすること。

<?php

require_once __DIR__ . '/vendor/autoload.php';

$config = array(
    "base_url" => "http://#Server IP#/auth.php",
    "providers" => array (
        "Facebook" => array (
            "enabled" => true,
            "keys"    => array ( "id" => "#App ID#", "secret" => "#App Secret#" ),
            "scope"   => "email, user_about_me, user_birthday, user_hometown", // optional
            // "display" => "popup" // optional
        )));

use hybridauth\Hybrid\Auth;

$hybridAuth = new Hybrid_Auth( $config );

$adapter = $hybridAuth->authenticate( "Facebook" );

$userProfile = $adapter->getUserProfile();

echo '<pre>'; var_dump($userProfile); echo '</pre>';

auth.phpについては、もうこういうおまじないだと思ってつくったらOK。

<?php

require_once __DIR__ . '/vendor/autoload.php';

require_once "vendor/hybridauth/hybridauth/hybridauth/index.php";

5.index.phpにアクセスすると、Facebookの認証が行われる。

認証が成功すれば、ユーザー情報が出力されるはずです。

あとがき

Twitter OAuthで躓く人は少ないですが、Facebook OAuthで躓く方はちらほらいらっしゃいます。
僕も何度もつまづきました。

Facebook Graph APIで取得できる情報がTwitterよりも多いということも要因の一つであり、認証が強固になっているのだと思います。

10
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
10