質問編集履歴

2 ミス

Shinog

Shinog score 104

2015/07/07 11:00  投稿

このCekePHPコードの何が違いますか??
CekePHPにおけるFcebookログインについて!!
はじめまして!!
現在、以下の記事を参考にFacebookでのログイン機能を実装させようとしている者です。
http://fuzzydevelopment.net/cakephp-facebook-374.html
この記事通りに展開したところ、Facebook上の情報をMySQLに格納は出来たものの、ログイン状態にならないことが分かりました。
どうすればログイン状態にすることができるでしょうか??
何かお分かりの方は是非ご教授の程よろしくお願い申し上げます。
  • PHP

    23033 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • CakePHP

    2474 questions

    CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

1 ミス

Shinog

Shinog score 104

2015/07/07 10:59  投稿

このCekePHPコードの何が違いますか??
はじめまして!!
現在、以下の記事を参考にFacebookでのログイン機能を実装させようとしている者です。
http://fuzzydevelopment.net/cakephp-facebook-374.html
この記事通りに展開したところ、Facebook上の情報をMySQLに格納は出来たものの、ログイン状態にならないことが分かりました。
この記事のlogin関数が少々乱雑だと感じたため、以下のようなコードに変更してみたのですが、それでもログイン状態になりません。  
どうすればログイン状態にすることができるでしょうか??
何かお分かりの方は是非ご教授の程よろしくお願い申し上げます。
```lang-php
<?php
//UsersController.php
App::uses('AppController', 'Controller');
App::import('vendor', 'facebook/src/facebook');
class UsersController extends AppController {
    public $helpers = array('Form', 'Html');
   public $components = array(
       'Auth' => array(
           'loginRedirect' => array('controller' => 'shops', 'action' => 'index'),
           'logoutRedirect' => array('controller' => 'shops', 'action' => 'index'),
       ),
       'Session',
   );
   public $Facebook;
   public function beforeFilter() {
       $this->Facebook = new Facebook(array(
           'appId' => '省略',
           'secret' => '省略',
           'cookie' => true,
       ));
       $this->Auth->allow('login', 'logout');
   }
   public function index() {
       if ($this->Auth->loggedIn()) {
           $facebookId = $this->Facebook->getUser();
           $this->set('user', $this->User->find('first', ['conditions' => ['User.id' => $facebookId]]));
       } else {
           $this->redirect(['action' => 'login']);
       }
   }
  public function login() {
       $this->autoRender = false;
       // facebook OAuth login
       $facebookId = $this->Facebook->getUser();
       $user = $this->User->find('first', ['conditions' => ['User.id' => $facebookId]]);
       if (isset($user['User'])) {
           if ($this->Auth->login($user)) {
               return $this->redirect(['action' => 'index']);
       } else {
          return $this->_add();
       }
       }
}
   protected function _authFacebook() {
       $loginUrl = $this->Facebook->getLoginUrl(['redirect_uri' => FULL_BASE_URL . Router::url(['controller' => 'users', 'action' => 'login'])]);
       return $this->redirect($loginUrl);
   }
   public function logout() {
           $logout_url = $this->Auth->logout();
           $this->redirect($logout_url);
   }
   protected function _add() {
       $this->autoRender = false;
       $facebookInfo = $this->Facebook->api('/me', 'GET');
       $user = array(
           'User' => [
               'id' => $facebookInfo['id'],
               'name' => $facebookInfo['name'],
/** createdとmodifiedというカラムがある場合、
.*. 下記のように記述しなくても、作成時と更新時に自動で現在時刻が挿入される。
.*. よって'created'、'modified'は削除してもOK
.*/
               'created' => date('Y-m-d H:i:s'),
               'modified' => date('Y-m-d H:i:s'),
               'link' => $facebookInfo['link'],
           ]
       );
       $this->User->create();
       if ($this->User->save($user)) {
           $this->Session->setFlash(__('登録が完了しました。'));
       } else {
           $this->Session->setFlash(__('登録てきません.'));
       }
       $this->redirect(['action' => 'index']);
   }
}
```
  • PHP

    23033 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • CakePHP

    2474 questions

    CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る