1

我正在使用 FB PHP SDK 来登录用户。这里没什么特别的 - 只是调用$fb->getLoginUrl()生成登录链接,用户通过它,授权,被退回到我的网站并且他们已经登录。到目前为止,所以好的。

在为登录用户保留的页面上,我有以下代码:

echo $fb->getUser(); //supposedly outputs user ID or 0 on failure

但问题是即使我手动访问 Facebook 并退出它,它也会输出用户 ID 。它似乎永远不会0为我输出,即检测到我已注销。

我错过了什么?有没有更好的方法来检测登录状态?

(注意:JS SDK 不适合我)

4

1 回答 1

1

尝试使用 destroySession 方法,并在您想注销时终止会话变量。

include('fb-php-sdk/facebook.php');
$config = array();
$config['appId'] = '641xxxx559';
$config['secret'] = '3bxxxxxxcd1c';

$facebook = new Facebook($config);

if(isset($_GET['act']) && $_GET['act'] == "logout") {
    $facebook->destroySession();

            // destroy session var here. Should be in format of "fmb_$appID"
}


$user = $facebook->getUser();
echo $user;
if ($user) {

    try {
    // Proceed knowing you have a logged in user who's authenticated.
    $user_profile = $facebook->api('/me');
    } catch (FacebookApiException $e) {
    echo '<pre>'.htmlspecialchars(print_r($e, true)).'</pre>';
    $user = null;
    }
    echo "<pre>";
    print_r($user_profile);
    echo "</pre>";  
    $logout = $facebook->getLogoutUrl();

    //echo $logout;

    echo "<a href='test.php?act=logout'>Logout</a>";


} else {

    $login = $facebook->getLoginUrl(array("scope"=>"email","display"=>"popup","redirect_uri"=>"http://domain.com/test.php"));

    echo "<a href='".$login."'>Login</a>";

}

如您所见,我正在传递 params 数组中的范围键来请求我想要返回的内容。第一次运行时,facebook 将要求用户确认范围内要求的内容。

于 2013-10-08T14:54:52.960 回答