如何使用facebook api验证已登录的Facebook用户

时间:2012-12-07 00:46:41

标签: codeigniter facebook-graph-api oauth

我在我的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登录页面,而不指向身份验证页面?

我感谢任何帮助

1 个答案:

答案 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>');
    }