我正在尝试为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'));
}
}
它验证并允许用户进入,但它不会在Auth组件会话中存储用户信息。可能是什么问题??
如果我调试debug($this->Auth->user())
我可以看到数据,但如果我单独提取字段debug($this->Auth->user('id'));
,则会返回null
。
答案 0 :(得分:2)
更改$this->Auth->login($user_record)
到$this->Auth->login($user_record['User'])
。