Cakephp2.Opauthプラグインを使ってTwitterログイン

Opauthプラグインを利用すれば、FacebookログインもTwitterログインも、他にもいろんなソーシャルログインも簡単に実装することができます!
では手順を追って見ていきましょう!

必要なモノを設置していこう!

まず必要な物はこれですね。

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

ダウンロードして解凍して出てきたフォルダを「Opauth」というファイル名に変更して...

app/Plugin/にぶっこみましょう!!

次はこれ!!

https://github.com/opauth/twitter

ダウンロードして解凍して出てきたフォルダをTwitterというファイル名に変更して...

先ほどの「Opauth」の中にある「Strategy」というフォルダにぶっこみましょう!!

最後はこれ!!!

  • opauth本体

http://opauth.org/

「DownLoad」をクリック!
そして「Opauth core onli」をクリックしてダウンロード!!
解凍したファイルも「Opauth」という名前に変更して、このファイルは「app/Plugin/Opauth/Vendor」のなかにぶっこみましょう!

コードを付け足していこう!

まずはbootstrap.phpに以下のコードを追加しましょう!

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

Configure::write('Opauth.Strategy.Twitter', array(
	'key'    => 'あなたのAPI key',
	'secret' => 'あなたのAPI secret'
));

keyとsecretには、それぞれのTwitterアプリで設定されているものを使ってください。

次はroutes.phpです!

Router::connect(
	'/opauth-complete/*',
	array('controller' => 'users', 'action' => 'opauthComplete')
);

これでOAuthの通信を行った後にUsersコントローラーのopeautnComplete関数にリダイレクトされます。


UsersController.php

public function opauthComplete() {
   debug($this->data);
}

http://localhost/プロジェクト名/auth/twitterで、ツイッターからユーザーの情報が表示されます。

後はこっから必要なデータをデータベースに保存するなりすれば、ログイン機能が実装できます!

Facebookログインも実装したければ、、

ここまで出来ていれば、

https://github.com/opauth/facebook
をダウンロードして解凍して、「Facebook」という名前に変えて「Strategy」にぶっこんで、
http://localhost/プロジェクト名/auth/facebookでユーザー情報が収得できます。

僕がハマったところ

  • Twitterアプリの設定でコールバックURLは必ず設定しましょう。今回の場合はローカルなので、http://127.0.0.1/プロジェクト名/auth/callbackがコールバックURLになります。
  • AppControllerにSecurityコンポーネントを設定している場合は引っかかってしまいます。今回の場合であればこれを追加しましょう。

UsersController.php

public function beforeFilter() {
    if($this->params['action'] == 'opauthComplete') {
        $this->Security->csrfCheck = false;
        $this->Security->validatePost = false;
    }
  }


cakephp勉強するならこの本がオススメです!

CakePHP2 実践入門 (WEB+DB PRESS plus)

CakePHP2 実践入門 (WEB+DB PRESS plus)