2013-06-25 132 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;