Cakephp 2.2.4在使用替代身份验证后不会保存身份验证用户信息

Cakephp 2.2.4在使用替代身份验证后不会保存身份验证用户信息,php,cakephp,cakephp-2.0,Php,Cakephp,Cakephp 2.0,我正在尝试为facebook用户创建身份验证。现在我检查我的数据库中是否存在fb用户id,如果存在,则进行身份验证,如果不存在,则对用户facebook信息进行数据挖掘,创建一个用户,然后进行身份验证。它成功地工作了,问题是,如果我使用像$this->Auth->user('id')这样的东西值返回null。我很好奇我可能做错了什么。下面是我的代码 public function fb_authenticate($data) { $this->Auth->fields = a

我正在尝试为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

更改
$this->Auth->login($user\u record)


$this->Auth->login($user\u record['user'])

就可以了。几天前也有同样的问题ago@numerical25顺便说一句,在创建新用户时,传递给login()的用户数组没有
id
键,因此请修复该问题。