2013-02-22 20 views
0

第一次我的index.php文件加載打電話時,我得到的值爲0:Facebook的PHP SDK未能在第一頁加載

$facebook->getUser();//returning 0 instead of id on first page load 

呼叫工作正常的任何後續頁面加載。

這是我的代碼:

$facebook = new Facebook(array(
     'appId' => $FB_APP_ID, 
     'secret' => $FB_APP_SECRET 
    )); 
$user_id = $facebook->getUser();//Returns 0 on first load. 

有其他人遇到此?也許我應該自動重新加載頁面,如果$facebook->getUser();沒有返回一個有效的用戶?

+0

如何嘗試捕捉? – AlphaMale 2013-02-22 14:19:54

+0

我確實發現了這個錯誤,爲了簡潔起見我沒有表明。 – joe 2013-02-22 14:21:03

+0

您是否檢查過getUser返回的內容? – CBroe 2013-02-22 14:27:13

回答

-1

可能是它不驗證它是第一次,你可以做一些這樣的事:

<?php 

    $facebook = new Facebook(array(
     'appId' => xxx, 
     'secret' => xxx 
    )); 

    $user_id = $facebook->getUser(); 

    if($user_id) { 

     // We have a user ID, so probably a logged in user. 
     // If not, we'll get an exception, which we handle below. 
     try { 

     $me = $facebook->api('/me','GET'); 
     echo "Name: " . $me['name']; 

     } catch(FacebookApiException $e) { 
     // If the user is logged out, you can have a 
     // user ID even though the access token is invalid. 
     // In this case, we'll get an exception, so we'll redirect and 
     // just ask the user to login again here. 
     $login_url = $facebook->getLoginUrl(); 
     echo("<script>top.location.href = '" . $loginUrl . "';</script>"); 
     } 
    } else { 

     // No user, redirect for the user to login 
     $login_url = $facebook->getLoginUrl(); 
     echo("<script>top.location.href = '" . $loginUrl . "';</script>"); 

    } 

    ?> 

編輯:

如果錯誤仍然存​​在,請嘗試使用此編輯,只是改變你的這條線:

$me = $facebook->api('/me','GET'); 

這樣:

$me= $facebook->api('/'.$user_id, 'GET'); 

希望這會解決您的問題。

+0

謝謝,但這沒有幫助,因爲用戶ID是0 :) $ me = $ facebook-> api('/'。user_id,'GET'); – joe 2013-02-22 19:56:24

+0

我不想將用戶發送到Facebook登錄頁面,因爲他們可能不是一個開始的Facebook用戶。 – joe 2013-02-22 19:57:50

+0

但訪問令牌只授予Facebook用戶! – AlphaMale 2013-02-23 04:46:23