2014-01-08 150 views
0

我想寫一個Facebook登錄,但它不工作,我已經剝離了代碼的基本或有問題的部分,如下所示:我發現無論用戶是否登錄Facebook,getUser方法總是返回0,我已經研究過類似的問題,但找不到解決方案。什麼可能是錯的?謝謝。Facebook的登錄不工作:getUser()總是返回0

<?php 
    require 'facebook/facebook.php'; 
    $app_id = "123456"; 
    $app_secret = "xyz"; 

    $facebook = new Facebook(array(
     'appId'  => $app_id, 
     'secret' => $app_secret, 
     )); 
    $user = $facebook->getUser(); 

    if ($user) { 
     try { 
     // Proceed knowing you have a logged in user who's authenticated. 
     $user_profile = $facebook->api('/me'); 
     } catch (FacebookApiException $e) { 
     error_log($e); 
     $user = null; 
     } 


    // Do stuff here  


    else { 

    echo "$user"; 

    } 
    ?> 

回答

0

我也有這個問題。我這樣做...

/**** FB APP DEETS ****/ 
DEFINE ('APPID', '123'); 
DEFINE ('APPSECRET', 'xyz'); 
DEFINE ('ACCESS_TOKEN', 'biglongtokenthinginhere'); 

$config = array(
     'appId' => APPID, 
     'secret' => APPSECRET, 
); 


     $facebook = new Facebook($config); 
     $facebook->setAccessToken(ACCESS_TOKEN); 

     // Get User ID 
     $user = $facebook->getUser(); 

然後如果($用戶)進行等

所以我相信你缺少的訪問令牌

爲了延長您的訪問令牌,我用這個。我在if($ user)之前添加了它並運行了一次,然後將它評論出來。它在屏幕上顯示一個新的訪問令牌,放置在腳本中並且不會過期。通常他們只能持續2個星期或類似的東西

/* 
* EXTEND TOKEN - NOW EXPIRES NEVER 
*/ 

//$graphUrl = 'https://graph.facebook.com/oauth/access_token?client_id='.APPID .'&client_secret='.APPSECRET.'&grant_type=fb_exchange_token&fb_exchange_token='.ACCESS_TOKEN; 
//     
//$accessToken = @file_get_contents($graphUrl); 
//parse_str($accessToken); //get the access_token param in the string and would be named $access_token 
//if(!$access_token) $access_token = $accessToken; //if cannot be extended then just return the access token with 2 hours expiry 
//echo $access_token; 
//    
//exit(__FILE__.__LINE__); 
+0

Thanks.Can我可以爲訪問令牌添加任何值,或者如何獲取它? – bodesam

+0

你需要使用與應用有關的特定應用。從記憶中(一段時間以來!),你需要到這裏https://developers.facebook.com/tools/explorer/從下拉菜單中選擇你的應用,然後點擊「獲取訪問令牌」。在隨後的彈出窗口中,轉到第三頁並檢查管理頁面,我認爲它是。它會給你一個很長的訪問令牌。 –

+0

正如我所說,它已經有一段時間了,但我認爲這就是我如何去做的:-) –