我正在使用FB PHP SDK来登录用户。这里没什么好看的 - 只需要调用$fb->getLoginUrl()
来生成登录链接,用户访问它,授权,退回到我的网站,他们'重新登录。到目前为止,非常好。
在为登录用户保留的页面上,我有以下代码:
echo $fb->getUser(); //supposedly outputs user ID or 0 on failure
但问题是输出用户ID ,即使我已手动转到Facebook并退出。它似乎永远不会为我输出0
,即检测到我已退出。
我错过了什么?有没有更好的方法来检测登录状态?
(注意:JS SDK不适合我)
答案 0 :(得分: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将要求用户确认范围内的要求。