我正在尝试使用一个需要Facebook用户提供信息的网站,我正在使用PHP和JS SDK.
我有一个PHP函数:
public function isLoggedOnFacebook() {
$user = $this->_facebook->getUser();
if ($user) {
return $this->_facebook->api("/$user");
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
在一个持有SDK中的facebook对象的类中$this->_facebook.
然后在块上我这样做:
<?php if (!$this->isLoggedOnFacebook()): ?>
<div>
<fb:login-button show-faces="true" perms="email" width="500" />
</div>
<?php endif ?>
Run Code Online (Sandbox Code Playgroud)
并且FB JS环境已正确设置(我认为),因此它可以工作.因此,用户可以弹出并授权该站点.
问题是即使在用户授权应用程序后,$ user始终为0,意味着$facebook->getUser()始终返回0,然后列出用户的面孔,包括已登录的用户,但如果我拨打电话$facebook->api('/me')或其他什么,那么它将会抛出无效的令牌异常.
我已经看到了这个问题,但我还没有看到解决方案,我不知道问题出在哪里,我的想法已经用完了.
在应用程序部分的开发人员的Facebook页面上有一个网站选项卡,您可以在其中设置您的站点URL和站点域,我认为这是我的问题的原因,但我不知道究竟是什么字段应该包含.
我在我的网站上登录了facebook.这已经有一段时间了,但昨天突然停止了工作.我已经将问题跟踪到getUser()方法,它现在似乎总是返回0.
我的代码看起来像:
<?php
require_once('facebook.php');
$facebook = new Facebook(array(
'appId' => 'xxxxxxxxxxxxx',
'secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxx'
));
$user = $facebook->getUser();
if ($user) {
try {
$profile = $facebook->api('/me');
$logoutUrl = $facebook->getLogoutUrl(
array(
'next'=>$baseUrl.'/fblogin/fblogin.php?logout'
)
);
$userIsLoggedIn=true;
} catch (FacebookApiException $e) {
echo '<pre>'.htmlspecialchars(print_r($e, true)).'</pre>';
$user = null;
$loginUrl = $facebook->getLoginUrl(
array(
'scope'=>'email,publish_stream',
'redirect_uri'=>$returnAfterLoginUrl
)
);
}
}else{
$loginUrl = $facebook->getLoginUrl(
array(
'scope'=>'email,publish_stream',
'redirect_uri'=>$returnAfterLoginUrl
)
);
}
?>
Run Code Online (Sandbox Code Playgroud)
我尝试了什么(可以在我的历史中找到)