Php Can';t使用Facebook API注销
因此,我创建了这个基本代码,用于使用Facebook登录/注销。一分钟前一切正常,我在换东西,然后突然,我无法注销。我将代码简化为纯粹的登录/退出行,但仍然不起作用。我从未看到登录链接。即使我单击“注销”,我仍然可以看到我的电子邮件,因此显然我仍然可以访问我的facebook信息。 这个api快把我逼疯了,只是今天早上getUser()总是返回0,不管我是否登录,现在情况正好相反——它总是返回一个用户,即使我注销Php Can';t使用Facebook API注销,php,facebook,api,Php,Facebook,Api,因此,我创建了这个基本代码,用于使用Facebook登录/注销。一分钟前一切正常,我在换东西,然后突然,我无法注销。我将代码简化为纯粹的登录/退出行,但仍然不起作用。我从未看到登录链接。即使我单击“注销”,我仍然可以看到我的电子邮件,因此显然我仍然可以访问我的facebook信息。 这个api快把我逼疯了,只是今天早上getUser()总是返回0,不管我是否登录,现在情况正好相反——它总是返回一个用户,即使我注销 <?php require '../facebook-php-sdk
<?php
require '../facebook-php-sdk/src/facebook.php';
$appID = '175698905xxxxxx';
$secret = 'cc8f99df86f7978c67xxxxxxxxxxxxx';
$facebook = new Facebook(array(
'appId' => $appID,
'secret' => $secret
));
// Get User ID
$user = $facebook->getUser();
$loginUrl = $facebook->getLoginUrl(array('req_perms' => 'email,read_stream,user_birthday'));
$logoutUrl = $facebook->getLogoutUrl();
if (!$user)
{
echo '<p><a href='.$loginUrl.'>Log in.</a></p>';
}
else
{
echo '<p><a href='.$logoutUrl.'>Log out.</a></p>';
}
$user_profile = $facebook->api('/me');
echo $user_profile['email'];
?>
更新:好的,我想代码是好的,如果我尝试从另一台计算机上使用它,它第一次工作正常,但在我登录后,注销链接不再工作。很难知道发生了什么,因为你的代码有点正常。
考虑重新设置你的应用程序的秘密,从你的应用程序列表中删除应用程序(在你的测试用户或你的配置文件中,如果你不使用测试用户),清除你的缓存。 另外,为了测试是否没有其他事情发生,将API调用放入try/catch中,看看它是否引发异常
if ($user) {
try {
$user_profile = $facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
}
正如劳伦斯所提到的
。。。方法返回当前用户的Facebook用户ID,如果没有登录用户,则返回0
因此,与其做额外的工作,为什么不直接切换它,以便如果在中定义了$user,则调用注销URL
if ($user) {
$logoutUrl = $facebook->getLogoutUrl();
} else {
$loginUrl = $facebook->getLoginUrl(array('scope' => 'email,read_stream,user_birthday'));
}
请注意,我使用的是
scope
,这是最新PHPSDK中权限数组的公认方式@phwd的解决方案非常棒。我使用以下setcookie()行对其进行了增强:
我希望这能帮助您解决进一步的问题。
$logoutUrl
从facebook注销。
要清除检索到的数据,必须清除整个会话
<a href='?sessionEnd'>seesion end</a>"
if(isset($_GET['sessionEnd'])){
session_destroy();
setcookie('PHPSESSID',false);
header('Location: /');
exit();
}
”
if(isset($\u GET['sessionEnd'])){
会话_destroy();
setcookie('PHPSESSID',false);
标题('位置:/');
退出();
}
<a href='?sessionEnd'>seesion end</a>"
if(isset($_GET['sessionEnd'])){
session_destroy();
setcookie('PHPSESSID',false);
header('Location: /');
exit();
}