繁体   English   中英

$ facebook-> getUser()突然停止工作

[英]$facebook->getUser() suddenly stopped working

我在我的网站上登录了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
        )
    );
}
?>

我尝试了什么(可以在我的历史中找到)

  1. 将SDK更新到最新版本
  2. Facebook PHP SDK的解决方案- getUser()突然返回0 (添加2 $ CURL_OPTS)
  3. 突然解决,getUser变为返回0.(PHP 3.1.1 SDK) (将base_domain添加到$ DROP_QUERY_PARAMS)
  4. Facebook登录的解决方案突然不再起作用了? (增加curlopt_connecttimeout)
  5. 创建一个新的应用程序,没有运气

我正在使用PHP 5.3.3版

我昨天下午一直试图让它工作,没有任何运气:(

有谁知道可能是什么问题,更重要的是,可能是什么解决方案?

谢谢

您的端口80或端口241可能被阻止导致CurlException 7.要检查是否只是在您的网站上传示例文件。 它会显示错误。

就我而言,我在000webhost.com上托管了我的测试域。 它最近阻止了导致同样错误的端口80。 当我将我的域名移动到另一个托管服务时,问题就解决了。

我希望这有帮助。

=====编辑=====

该问题的解决方案是(我认为虽然没有证明)获得https连接,因为我遵守php sdk在http连接中不起作用。 看看我的问题在这里

====== YEAH! 最后的最终和正确的答案=======

只有当您的Web主机禁用了cURL时才会出现这种情况( 适用于100%类似问题的情况 )。 如果安装了cURL,您的网站将正常运行。 通常,用户收到的错误(如果错误报告已打开)是
Fatal error: Uncaught CurlException: 7: couldn't connect to host thrown in /home/.../base_facebook.php on line ...

确保禁用沙盒模式并再次重新检查您的设置,包括appId,secret。

并尝试将您的登录URL更改为$loginUrl = $this->facebook->getLoginUrl($pram);

通过将脚本移动到服务器上的另一个子目录来解决它... / login / become / facebook / login /

我没有丝毫的线索为什么这会有所作为......

    $facebook = new Facebook(array(
        'appId' => '***************',
        'secret' => '**************************',
        'cookie' => false //add this and try
        ));

并尝试添加权限“read_stream”清除浏览器cookie后检查此项..

它发生在我身上,当我检查我的apache日志时,我发现了这个:

tail -f for apache log

我通过PHP SDK(使用Curl)与Facebook通信时发现了SSL问题。 您必须将CURL_OPTS“CURLOPT_SSL_VERIFYPEER”设置为“false”。

例如:

facebook::$CURL_OPTS[CURLOPT_SSL_VERIFYPEER] = false; 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM