Opauthは、PHPにおける認証処理を標準化してくれるフレームワークだ。
https://github.com/opauth/opauth
上記サイトから、ZIPをダウンロードして展開したら、
1) libをサイトのドキュメントルートにコピーする。
2) 認証用として例えばauthというディレクトリをドキュメントルートに作成する。
3) authの中には、展開したexampleフォルダの中の、index.php、callback.php、.htaccessおよびopauth.conf.php.defaultをコピーする。
4) opauth.conf.php.defaultをopauth.conf.phpにリネームする。
5) opauth.conf.phpの'path' => '/'を'path' => '/auth/'に書き換える。
6) opauth.conf.phpの'security_salt'にランダムな文字列を設定する。
7) opauth.conf.phpのStrategyを、例に従って記述する。
Strategyに記載するパラメーターは、各プロバイダのサイトでアプリケーション登録をすると得られる。
プロバイダのアプリケーション登録ページの例
Google+
プロバイダ毎のStrategyは以下からダウンロードして、lib/Opauth/Strategyの下にプロバイダ名のディレクトリを作成してコピーする。
https://github.com/opauth/opauth/wiki/List-of-strategies
例えば、Facebookであれば、
lib/Opauth/Strategy/Facebookの下に、FacebookStrategy.phpをコピーする。
Twitterの場合は、Vendor/tmhOAuthディレクトリもコピーする。
認証手続きを開始するには、opauth.conf.phpで設定した'path/(プロバイダ名)'にアクセスする。
私の場合は、Strategyが見つからないというエラーが出たので、opauth.conf.phpのStrategyに以下のパラメータを追加した。
例えば、Facebookであれば、
'Facebook' => array(
'app_id' => '(app_id)',
'app_secret' => '(app_secret)',
'strategy_url_name' => 'Facebook'
)
Googleの場合は、Googleサイト側でError: redirect_uri_mismatchという画面が出てしまい、認証画面が表示されなかったので、以下のパラメータも追加してみた。
'Google' => array(
'client_id' => '(client_id)',
'client_secret' => '(client_secret)',
'redirect_uri' => 'http://(ドメイン)/auth/Google/oauth2callback',
'strategy_url_name' => 'Google'
)
なお、Googleは、https://console.developers.google.com/project でリダイレクトURLを設定する必要がある。
しかし、結局Googleで認証ができない。
試行錯誤しているうちに、なぜか認証できるようになった。
Googleは、GoogleApps for Workでも感じたが、設定しても反映するまでの遅延が大きいようなので、設定したらある程度時間を置く必要があるのかもしれない。24時間以上かかる場合もある?
サーバー間の同期に時間がかかっているのだろうか。設定方法に自信がない場合は、設定が終了するまでになんともいえない無為な時間が流れるのは、かなり困る。
0 件のコメント:
コメントを投稿