cakephp opauth plugin 使い方

2014年2月7日更新 view: 538 view
photoBy: http://fortheloveofcake.ca/wp-content/uploads/200…

簡単にソーシャルログインできるプラグイン

  • twitter
  • facebook
  • google

などにログインできます。

スポンサードリンク

流れ

  • http://your.com/auth/twitter にアクセス
  • twitter 認証画面で認証する
  • http://your.com/opauth-complete/  に戻ってきて認証が完了している

設置方法

ファイルを取得

・cakephp opauth (ダウンロードして /Plugin/Opauth として保存)

https://github.com/uzyn/cakephp-opauth

・opauth 本体 (/Plugin/Opauth/Vendor/ に保存)

http://opauth.org/

・twitter strategy (/Plugin/Opauth/Strategy/ に保存)

https://github.com/opauth/twitter

・bootstrap.php 追記 (twitter の key とかは変更)

CakePlugin::load('Opauth', array('routes' => true, 'bootstrap' => true));

Configure::write('Opauth.Strategy.Twitter', array(
'key' => 'hY6feeavML4MISEFGBF23TUzNrSw',
'secret' => 'sCEppQnXTXdWY2yefaafeaaWivoirTE6Gz8Ilm3y8joIPE'
));

・routes.php 追記

Router::connect('/auth/callback', array('plugin' => 'Opauth', 'controller' => 'Opauth', 'action' => 'callback'));//2 ログイン完了後、情報を解析
Router::connect('/auth/*', array('plugin' => 'Opauth', 'controller' => 'Opauth', 'action' => 'index'));//1 ログイン処理へ飛ばす
Router::connect('/opauth-complete', array('controller' => 'defaults', 'action' => 'complete'));//3 情報解析後、ここへ。

・DefaultsController.php

class DefaultsController extends AppController {

    function complete()
    {
        pr($this->request->data);
        $this->autoRender = false;
    }

}

これで設定完了

いざ、twitter oauth してみよう

http://your.com/auth/twitter

にアクセスすると、自動的にログインが始まります。

plugin内のOpauthController.phpとかは触らないように。
それにアクションとか指定するとおかしくなる。

リダイレクトに注意

appcontroller.phpで最後にスラッシュをつけて終わらせるということをやっている場合、
うまく this->data が取れない。
callback という文字があったらリダイレクトさせないようにしておく。

if(isset($_SERVER['REQUEST_URI']) && !preg_match('/rss|test\.php|callback/',$_SERVER['REQUEST_URI'])){
                if (substr($this->request->url, -1) != '/' && $_SERVER['REQUEST_URI'] != '/') {
                    $this->redirect(FULL_BASE_URL.DS.$this->request->url.DS, 301);
                    exit;
                }
            }

また、ログイン情報が表示されない場合は、OauthAppController.php の119行目付近に以下を追加。
これで、ログインした情報が tmpAuth に入る。

$this->Session->write('Opauth',$response);
スポンサードリンク

関連記事

関連カテゴリ