2012-03-14 44 views
0

我的應用程序正在使用Facebook登錄。所以我設置的登錄按鈕來調用JavaScript SDK是這樣的:

$('.fblogin').click(function(){ 
    FB.login(function(response) { 
     if (response.authResponse) { 
     //call jquery ajax to user/login_facebook method (I'm using CI) 
     } 
    }, {scope: 'email,user_birthday,publish_stream'}); 

}); 

然後在用戶控制器我login_facebook方法,我只是把這種測試;

$me = $this->facebook->api('/me'); 
print_r($me); 

問題是這個調用看起來很慢。當我通過Firebug分析它時,ajax調用會運行一段時間,然後返回500內部服務器錯誤消息。然而,user/login_facebook實際上存在,就好像我稱之爲,它正常顯示工作。

echo "works";exit; 
$me = $this->facebook->api('/me'); 
print_r($me); 

當我嘗試調用用戶/直接login_facebook,頁面加載很慢和一片空白,但有時它的工作原理(雖然加載速度慢),並顯示數組。

我在這裏錯過了什麼嗎?在本地主機上,它工作得很好,但是當我將它上傳到主機(VPS)時,就變成了這樣。感謝你的回答。

回答

0

在你的FB.init中你指定cookie: true?也許在PHP方面,它又通過身份驗證,因爲你沒有使用cookies?也會推薦使用頻道文件和緩存。所有這些都記錄在the Facebook developers docs for the jdk。最後,如果它在本地主機上速度很快,並且VPS速度很慢,那麼也許你需要找出問題的原因。可能只是您的VPS網絡速度很慢。

+0

是的,我設置cookie的:真正的FB.init。我會嘗試使用頻道和緩存,但令人困惑的是,我有另一個使用Facebook Connect的應用程序,在相同的域(具有不同的目錄),它工作得很好。 – Henson 2012-03-15 03:25:32

+0

這使你完美的形狀來隔離問題。這兩個目錄中的代碼有什麼區別?開始消除分歧,你應該能夠縮小原因。 – 2012-03-15 15:58:36

0

很奇怪,但這工作正常,我

$token_url = 'https://graph.facebook.com/oauth/access_token?client_id=' 
       . 'YOUR_API_KEY' . '&redirect_uri=' . urlencode('YOUR_APP_URL') 
       . '&client_secret=' . 'YOUR_APP_SECRETE'; 
     //. '&code=' . $code; 
     $access_token = $facebook->getAccessToken(); 

// Run fql query 
     $fql_query_url = 'https://graph.facebook.com/'  
       . $facebook->getUser() 
       . '&' . $access_token; 
     $fql_query_result = file_get_contents($fql_query_url); 
     //$fql_query_result = $iframeadv->curl($fql_query_url); 
     $fql_query_obj = json_decode($fql_query_result, true);