如何阻止facebook sdk在$facebook->getUser()中返回uid


how to stop facebook sdk from returning uid in $facebook->getUser()

所以我正试图为我的网站编程Facebook注销功能

问题是使用facebook注销按钮将从facebook网站注销用户而不是从我的网站注销用户

所以我当前的逻辑是当注销按钮被点击,它反而调用我的应用程序的注销功能和会话被清除等

,但然后我也有逻辑在其他地方,如果$facebook->getUser()返回uid正确,从数据库获取用户信息,并设置他登录

是否有办法防止$facebook->getUser()返回正确的用户id?

IE当用户点击登出时,他不应该退出实际的facebook网站,而且$facebook->getUser()也不应该返回一个适当的id,这样他就不会自动重新登录了

使用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

facebook如何知道用户已退出您的网站?向本地db放置一个标志,表示用户已注销。在$facebook->getUser()后检查