0

Facebook ユーザーの認証を作成しようとしています。現在、データベースにfbユーザーIDが存在するかどうかを確認し、存在する場合は認証し、存在しない場合は、ユーザーのfacebook情報をデータマイニングしてユーザーを作成し、認証します。問題は、$this->Auth->user('id');値が null を返すようなものを使用した場合です。私が間違っているかもしれないことに興味があります。以下は私のコードです

public function fb_authenticate($data) {
    $this->Auth->fields = array('username' => 'fbid', 'password' => 'fbpassword');
    $this->loadModel('User');
    $user_record = $this->User->find('first', array(
            'conditions' => array('fbid' => $data['user_id'])
    ));
    if(empty($user_record)) {
        $fbu = $this->Facebook->getUserInfo($data['user_id']);
        $user_record = array(
            'User'=>array(
                'username'=>$fbu->username,
                'fbid'=>$data['user_id'],
                'oauth_token'=>$data['oauth_token'],
                'access_token'=>$data['access_token'],
                'firstname'=>$fbu->first_name,
                'lastname'=>$fbu->last_name,
                'fbpassword'=>$this->Auth->password($data['user_id']),
                'role'=>'user'
        ));     
        $this->User->create();
        $this->User->save($user_record,null);
    }
    if (!$this->Auth->login($user_record)) {
       $this->Session->setFlash(__('Invalid username or password, try again'));
    }
}

認証してユーザーを許可しますが、認証コンポーネント セッションにユーザー情報を保存しません。何が問題なのですか??

デバッグdebug($this->Auth->user())するとデータが表示されますが、フィールドを個別にプルするdebug($this->Auth->user('id'));と が返されますnull

4

1 に答える 1

2

変化する$this->Auth->login($user_record)

$this->Auth->login($user_record['User'])

于 2012-12-27T21:15:14.167 に答える