2013-06-25 137 views
4

我在我的网站上有facebook登录。这一段时间运行良好,但昨天突然停止工作。我已经将问题跟踪到现在总是返回0的getUser()方法。

我的代码如下所示:

<?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() suddenly returns 0(加2 $ CURL_OPTS)
  3. 解决方案suddenly, getUser became to return 0.(PHP 3.1.1 SDK)(将base_domain添加到$ DROP_ QUERY_PARAMS)
  4. 解决方案的Facebook login is suddenly not working anymore?(增加curlopt_connecttimeout)
  5. 创建一个新的应用程序,没有运气

我使用PHP版本5.3.3

我一直在试图得到它的工作自从昨天下午,没有任何运气:(

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

谢谢

回答

1

通过移动解决它脚本到服务器上的另一个子目录... /登录/成为/ Facebook的/登录/

我没有丝毫的线索,为什么有差别......

2

确保沙盒模式被禁止,重新检查你的设置,包括再次APPID,秘密。

,试着改变你的登录网址$loginUrl = $this->facebook->getLoginUrl($pram);

+0

谢谢您的回复, 沙盒模式禁用,设置是正确的(它工作得很好了几个星期,直到昨天)。 更改loginUrl这样做不会有任何好处,因为我的范围内没有$ this? – user6

+0

那么用户重定向到Facebook登录并登录后会发生什么?它的工作呢? – drarkayl

+1

用户给了应用程序适当的权限后,他返回的网站,其中getUser()仍然会返回0 :( – user6

9

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

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

我希望这会有所帮助。

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

上述问题的解决方案是因为它我遵守了PHP SDK中(我认为虽然没有得到证实)获得的HTTPS连接不在http连接中工作。看看我的问题here

====== YEAH!最后的,也是正确的答案,最后=======

当卷曲已被您的虚拟主机(适用于类似的问题的情况下,100%),禁用只能出现这种情况。如果安装了cURL,您的网站将正常运行。通常情况下,用户接收(如果ERRORREPORTING开启时)错误是
Fatal error: Uncaught CurlException: 7: couldn't connect to host thrown in /home/.../base_facebook.php on line ...

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

,并尝试添加权限“read_stream” 检查该清除浏览器Cookie后..

0

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

tail -f for apache log

,我发现它的SSL问题时,通过PHP SDK的Facebook(使用curl)进行通信。 您必须将CURL_OPTS“CURLOPT_SSL_VERIFYPEER”设置为“false”。

例:

facebook::$CURL_OPTS[CURLOPT_SSL_VERIFYPEER] = false;