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

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

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

前提として

  * モデル：User
  * コントローラ：UsersController.php

`app_id`と`app_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のプラグインとして下記に設置

![画像の説明をここに入力](https://i.stack.imgur.com/d3J5M.png)

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

![画像の説明をここに入力](https://i.stack.imgur.com/n8vQ9.png)

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

![画像の説明をここに入力](https://i.stack.imgur.com/TD0R6.png)

10.認証URLにアクセス

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

＊アクセス方法は全くわかりません
CC BY-SA 3.0
2015-02-13T03:24:02.920
6422
2015-02-15T21:33:11.233
2020-06-17T08:14:45.997
-1
8168
question
php cakephp facebook
CakePHPにおけるFacebook認証について
具体的にどう動かないのか書いてないので想像による答えですが、  
テストサイトがlocalhostなのが問題なのではないでしょうか。

OAuthのプロトコルの解説では認証結果をOAuth Server(この場合facebook)からOAuth
Client(この場合あなたが動かしているlocalhost)に返すようです。  
でも、localhostでは通知のしようがないですね。

この辺が問題なのではないかと思います。
CC BY-SA 3.0
2015-02-13T23:31:28.630
6467
2015-02-13T23:31:28.630
8136
6422
answer
> ①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`](https://github.com/uzyn/cakephp-
opauth/blob/master/Config/routes.php)を参考に自分でルートを定義する必要があるようです。
CC BY-SA 3.0
2015-02-15T05:36:35.593
6513
2015-02-15T05:36:35.593
8000
6422
answer