我在我的codeigniter应用程序中使用facebook登录。我已经设置了控制器来处理登录,似乎它正在处理所有用户状态的情况,除非用户登录到Facebook并尝试登录我的应用程序但从未对其进行身份验证。
这是我的facebook控制器索引功能:
$data=array(
'redirect_uri' => site_url('facebookcontroller/handle_facebook_login'),
'scope' => 'publish_stream,email'
);
redirect($this->fbconnect->getLoginUrl($data));
是否 - > getLoginUrl()仅指向facebook登录页面,而不指向身份验证页面?
我感谢任何帮助
答案 0 :(得分:1)
好像你正在使用旧版的facebook sdk。我建议看看here,因为其中一些功能不再适用。 然后考虑到,当有人登录到Facebook并且你要求提供这样的个人资料信息时:
$data['user_profile'] = $profile = $this->facebook->api('/me');
它可能正在使用过时的访问令牌,因此您必须将该调用封装在try-catch块中,如下所示:
try {
$data['user_profile'] = $profile = $this->facebook->api('/me');
}catch (Exception $e){
$this->facebook->setAccessToken($this->facebook->getAccessToken());
try {
if($this->facebook->getUser()) {
$this->facebook->api(array('method' =>'auth.revokeAuthorization' ));
}
}catch(Exception $e) {
redirect('<login controller>');
}
redirect('<login controller>');
}