我已经成功地将 facebook connect 集成到我的 codeigniter 应用程序中,但是我遇到了一个奇怪的故障。
我的登录控制器中的过程如下:
- 检查用户是否有 facebook 会话
- 如果用户已登录 facebook 并已获得许可,则应将他重定向到我的应用程序上的个人资料页面
- 如果没有会话,或者如果用户登录到 facebook 但没有授予权限,登录表单(查看文件)应该显示没有重定向
我面临的问题是,如果用户已登录 facebook 并已获得权限,并且如果他访问登录页面,登录表单会短暂显示,然后在一两秒钟后,他会被重定向到他的个人资料页面。为什么甚至显示登录表单?$this->load->view('login_form');
在检查完上述所有内容后,所有代码都在控制器的最后一行执行。
所以现在,首先显示 login_form 视图文件,然后检查 facebook 会话,然后重定向。
添加了控制器代码:
$this->load->library('facebook');
$user = $this->facebook->getUser();
if($user)
{ try{
$fb_data = $this->facebook->api('/me');
}
catch(FacebookApiException $e)
{
error_log('from the login: ' . $e);
$user = null;
}
}
if($user)
{
//below line checks if facebook email is in database
if($this->ion_auth->email_check($fb_data['email'])
{
redirect('my_profile');
}
}
//user not logged in display login page
$this->load->view('login_form');
在我的登录表单上,我使用的是 facebook javascript 连接按钮。按下按钮打开 facebook oauth 对话框页面,执行后通过 javascript 刷新原始登录页面。