登录后通过Facebook登录CakePHP无重定向

时间:2015-03-06 09:14:45

标签: facebook cakephp

我正在关注tutorial以在我的应用程序中应用FB登录。我已经逐步完成了整个教程。在登录页面上还可以看到按钮"通过Facebook登录"。但是,当我点击该按钮并通过FB验证或我已经登录到FB但我的页面没有重定向到登录区域。即使在通过FB登录后,我仍然在登录页面。但CakePHP登录正常。

来自UsersController.php的登录操作的一些代码段

    public function login() {
    if ($this->request->is('post')) {
        if ($this->Auth->login()) {
            if($this->Auth->user('id')==1){
                if($this->Auth->user('type')==1){
                    if($this->Auth->user('verified')==0){
                        $this->Auth->logout();
                    }
                }
                return $this->redirect($this->Auth->redirectUrl());
                $this->Session->setFlash(__('Logged In Successfully'), 'default', array('class' => 'alert alert-success'));
            }               
            else{
                $this->redirect(array('controller'=>'users','action'=>'index'));
            }              
        }
        $this->Session->setFlash(__('Invalid username or password, try again'), 'default', array('class' => 'alert alert-danger'));
    }
}

在AppController.php中,我包含以下代码:

public $components = array(
    'Paginator',
    'Session',
    'Auth' => array(
        'loginRedirect' => array(
            'controller' => 'users',
            'action' => 'index'
        ),
        'logoutRedirect' => array(
            'controller' => 'users',
            'action' => 'home',                
        ),
        'authenticate' => array(
            'Form' => array(
                'passwordHasher' => 'Blowfish',
                'fields'=>array('username'=>'email') 
            )
        )
    ),
    'Email',
    'Facebook.Connect'
);
var $helpers    = array('Facebook.Facebook');

在UsersContoller.php pr($_SESSION)输出以下代码,当我已在CakePHP登录页面上登录FB时:

    Array
(
    [Config] => Array
        (
            [userAgent] => f04e6*****************c00392
            [time] => 1425647071
            [countdown] => 10
        )

    [fb_989554394440625_user_id] => 8459*********71
)

我已经在网上搜索了这个问题,但无法解决问题。

1 个答案:

答案 0 :(得分:-1)

缺少一些重要的代码部分,需要提供合格的,经过验证的答案。

你在哪里调用login-Function?如果用户未登录,请确保只调用此项,否则请渲染您的内容..

if(!$this->Auth->user()) {
   $this->login();           // request login
} else {
   $this->render('profile'); //render your view
}

如果用户正确登录,这应该呈现"配置文件" -View。如果您似乎已登录但仍然会调用login-Fn,那么您可能在覆盖Auth-Methods时犯了错误(如果您这样做了)

如果仍然无法解决问题,请在此处添加更多代码。