所以我正在尝试为我的网站编写Facebook注销功能
事情是使用Facebook注销按钮将改为从Facebook网站注销用户而不是从我的网站
所以我当前的逻辑是当点击退出按钮时,它会调用我的应用程序的注销功能,会话被清除等等
但是我还有其他地方的逻辑,如果$ facebook-> getUser()正确返回uid,从数据库中获取用户信息并将其设置为已登录
有没有办法阻止$ facebook-> getUser()返回正确的用户ID?
IE当用户点击退出时,他不应该退出实际的facebook网站,而且$ facebook-> getUser()也应该没有返回正确的id,这样他就不会自动重新登录再次答案 0 :(得分:0)
使用Facebook SDK时要记住的是,当您进行身份验证时,您实际上是登录Facebook&你的网站是单独的 - 你需要迎合这个逻辑。
登录Facebook后,会创建一个身份验证cookie(而不是会话)。您可能正在使用会话进行站点身份验证,但Facebook正在使用Cookie。
如果您不希望在后续调用中返回UID,则需要调用 $ facebook-> destroySession(); 。
看看我的CodeIgniter代码,* index.php / authenticate / kill_session *方法调用上面的 destroySession(); 方法以及清除我的应用程序会话 - 这完全导致我退出Facebook和我的应用程序:
<?php
class Facebook_model extends CI_Model
{
public function __construct()
{
parent::__construct();
$this->config->load('facebook');
$config = array(
'appId' => $this->config->item('facebook_api_key'),
'secret' => $this->config->item('facebook_secret_key'),
'fileUpload' => false,
);
$this->load->library('Facebook', $config);
}
public function connect()
{
$user = $this->facebook->getUser();
$profile = null;
if($user)
{
try {
$profile = $this->facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
}
$fb_data = array(
'me' => $profile,
'gender' => $profile['gender'],
'uid' => $user,
'loginUrl' => $this->facebook->getLoginUrl(array('scope' => 'email,user_birthday')),
'logoutUrl' => $this->facebook->getLogoutUrl(array('next' => base_url('index.php/authenticate/kill_session'))),
);
return $fb_data;
}
public function disconnect()
{
$this->facebook->destroySession();
}
} // EOC