Php $facebook->;getUser()突然停止工作
我已经在我的网站上登录了facebook。一段时间以来,这种方法一直很有效,但昨天突然停止了。我已经跟踪了getUser()方法的问题,该方法现在似乎总是返回0 我的代码如下所示:Php $facebook->;getUser()突然停止工作,php,facebook,facebook-graph-api,Php,Facebook,Facebook Graph Api,我已经在我的网站上登录了facebook。一段时间以来,这种方法一直很有效,但昨天突然停止了。我已经跟踪了getUser()方法的问题,该方法现在似乎总是返回0 我的代码如下所示: <?php require_once('facebook.php'); $facebook = new Facebook(array( 'appId' => 'xxxxxxxxxxxxx', 'secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxx' )); $u
<?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
)
);
}
?>
我尝试过的(并且可以在我的历史中找到)
谢谢请确保沙盒模式已禁用,并再次检查您的设置,包括appId、secret
并尝试将您的登录url更改为
$loginUrl=$this->facebook->getLoginUrl($pram);
您的端口80或端口241可能被阻止,从而导致异常7。若要检查,只需将示例文件上载到您的网站中。它将显示错误
在我的例子中,我的beta域托管在000webhost.com上。它最近阻止了端口80,这导致了相同的错误。当我将我的域移动到另一个托管服务时,问题得到了解决
我希望这有帮助
====编辑======
这个问题的解决方案是(我认为虽然没有经过验证)获得一个https连接,因为我发现php sdk在http连接中不起作用
=======是的!最后的正确答案========
只有当您的web主机禁用了cURL时,才会出现这种情况(适用于100%的类似问题情况)。如果安装了cURL,您的网站将正常运行。通常,用户收到的错误(如果启用了errorreporting)是
致命错误:未捕获卷曲异常:7:无法连接到/home/../base\u facebook.php联机中抛出的主机…
facebook::$CURL_OPTS[CURLOPT_SSL_VERIFYPEER] = false;
并尝试添加权限“读取\u流”
清除浏览器cookies后检查此问题。通过将脚本移动到服务器上的另一个子目录解决了此问题。。。 /登录/成为/facebook/login/
我一点也不知道为什么会有不同…这发生在我身上,当我检查我的apache日志时,我发现: 我发现通过PHPSDK(使用Curl)与Facebook通信时存在SSL问题。 您必须将CURL_OPTS“CURLOPT_SSL_VERIFYPEER”设置为“false” 例:
感谢您的回复,沙盒模式已禁用,设置正确(直到昨天,它已经正常工作了数周)。像这样更改loginUrl不会有任何好处,因为我的范围内没有$this?那么,在用户重定向到facebook登录并登录后会发生什么?它是否工作?在用户对应用程序授予适当的权限后,他返回到getUser()仍将返回0的站点:(只需从myapps中删除你的应用程序,然后再次尝试添加它。只需检查你的facebook对象是否已初始化,然后尝试此->facebook并打印你的appid。我已尝试创建一个新应用程序,同样的问题:(已初始化$facebook对象,我可以从中打印我的appid。)。
facebook::$CURL_OPTS[CURLOPT_SSL_VERIFYPEER] = false;