CakePHPにおけるFacebook認証について

投稿者: Anonymous

CakePHPにおいてFacebookでログインを開発しているのですがうまくいきません。

基本的に下記サイトを利用しました。

http://shigurui.kirscheweb.com/?p=136

前提として

  • モデル:User
  • コントローラ:UsersController.php

app_idapp_secretは取得してセットしてあります。

下記手順で

  • 2,5,9番の配置方法
  • 3番のConfigure::write('Opauth.path', '/users/auth/');
  • 7番のControllerの記述方法

が怪しいのではないかといくつか試しましたがどれも上手くいきません。

何かアドバイスなどいただければ幸いです。

手順

1.下記サイトよりcakephp-opauth-master.zipをダウンロード

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

2.ダウンロードしたファイルを解凍し、CakePHPのプラグインとして下記に設置

画像の説明をここに入力

3.bootstrap.phpに設定を記入

アプリ/app/Config/bootstrap.php

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

Configure::write('Opauth.Strategy.Facebook', array(
'app_id' => 'YOUR FACEBOOK APP ID',
'app_secret' => 'YOUR FACEBOOK APP SECRET'
));
Configure::write('Opauth.path', '/users/login/');

*パスにはただ単にログイン画面を指定した

4.Facebook用の「Strategy」をダウンロード

https://github.com/opauth/facebook

5.ダウンロードしたファイルを解凍し、Strategyとして設置

アプリ/app/Plugin/Opauth/Strategy/Facebook

画像の説明をここに入力

6.Config/routes.phpに記述を追加

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

7.コントローラーにメソッドを追加

class UsersController extends AppController {
       public function opauth_complete() {
           debug($this->data);
       }
   }

9.ダウンロードしたファイルを解凍し、Vendorに設置

アプリ/vendors/Opauth

画像の説明をここに入力

10.認証URLにアクセス

http://localhost/アプリ/auth/facebook

*アクセス方法は全くわかりません

解決

①2,5,9番の配置方法は正しいのか?

cakephp-opauth、facebook用strategy、opauth、それぞれ問題なく配置できていると思います。

②3番のConfigure::write('Opauth.path', '/users/login/');の記述ですが/users/login/のところに何を記述すればいいのか?(参考サイトに認証ページと書いてあったのでログインのURLを記述しました)

cakephp-opauthのreadmeから引用すると、

If your CakePHP app does not reside at DocumentRoot (eg. http://localhost), but at a directory below DocumentRoot (eg. http://localhost/your-cake-app),
add this line to your app’s APP/Config/bootstrap.php, replacing your-cake-app with your actual path :

とあるので、あなたのアプリにhttp://hogehoge/としてアクセスできる場合はこのオプションは不要です。http://hogehoge/someapp/としてアクセスしている場合は/someapp/auth/を指定します。

③ 10番でのアクセス方法 http://サーバ名/users/auth/facebook と入力すると下記のようなエラーとなります

ここまでの流れから察するに、http://サーバ名/でCakePHPのルートにアクセスできるようですから、http://サーバ名/auth/facebookになるかと思います。

なお公式のチュートリアルに従うなら、/auth/というURLは固定です。これを例えば/users/auth/などに変更したい場合はapp/Plugin/OpAuth/Config/routes.phpを参考に自分でルートを定義する必要があるようです。

回答者: Anonymous

Leave a Reply

Your email address will not be published.