繁体   English   中英

如何阻止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如何知道该用户已退出您的网站? 在本地数据库上放置一个标志,指示该用户已注销。 在$ facebook-> getUser()之后检查它。

使用Facebook SDK时要记住的一点是,当您进行身份验证时,实际上是分别登录Facebook和您的网站-您需要满足这种逻辑。

登录到Facebook后,将创建身份验证cookie(而不是会话)。 您可能正在使用会话进行站点身份验证,但是Facebook使用的是Cookie。

您需要调用$ facebook-> destroySession(); 如果您不希望在后续调用中返回UID。

看一下我的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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM