0

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

我很感激任何帮助

4

1 回答 1

1

看来您使用的是旧版本的 facebook sdk。我建议看看这里,因为其中一些功能不再起作用。然后考虑到,当有人登录 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>');
    }
于 2012-12-08T03:14:24.990 回答