2012-12-18 162 views
1

我正在使用用PHP編寫的Facebook API連接腳本(由Facebook提供)。一切正常,它會生成登錄URL並在我登錄時將我重定向回網站。Facebook API:登錄,但仍不起作用

但是,$ user變量似乎未定義。

有沒有人遇到過類似的問題?在Facebook應用程序統計信息頁面中,我可以看到該應用程序已被使用。

更新 - 代碼:

<?php 

$app_id  = "xxxxxxxxxxxxxx"; 
$app_secret = "xxxxxxxxxxxxx"; 
$site_url = "http://xxx"; 

try{ 
    include_once "src/facebook.php"; 
}catch(Exception $e){ 
    error_log($e); 
} 

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

if($user = $facebook->getUser()) 
{ 
    echo 'ok'; 
} 
else 
{ 
} 

if($user){ 
//==================== Single query method ====================================== 
    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; 
    } 
//==================== Single query method ends ================================= 
} 

if($user){ 
    // Get logout URL 
    $logoutUrl = $facebook->getLogoutUrl(); 
}else{ 
    // Get login URL 
    $loginUrl = $facebook->getLoginUrl(array(
     'scope'  => 'email,user_birthday,user_about_me', 
     'redirect_uri' => $site_url . '/auth_complete.php', 
     )); 
} 

if($user){ 
    // Proceed knowing you have a logged in user who has a valid session. 

//========= Batch requests over the Facebook Graph API using the PHP-SDK ======== 
    // Save your method calls into an array 
    $queries = array(
     array('method' => 'GET', 'relative_url' => '/'.$user), 
     array('method' => 'GET', 'relative_url' => '/'.$user.'/home?limit=50'), 
     array('method' => 'GET', 'relative_url' => '/'.$user.'/friends'), 
     array('method' => 'GET', 'relative_url' => '/'.$user.'/photos?limit=6'), 
     ); 

    // POST your queries to the batch endpoint on the graph. 
    try{ 
     $batchResponse = $facebook->api('?batch='.json_encode($queries), 'POST'); 
    }catch(Exception $o){ 
     error_log($o); 
    } 

    //Return values are indexed in order of the original array, content is in ['body'] as a JSON 
    //string. Decode for use as a PHP array. 
    $user_info  = json_decode($batchResponse[0]['body'], TRUE); 
    $feed   = json_decode($batchResponse[1]['body'], TRUE); 
    $friends_list  = json_decode($batchResponse[2]['body'], TRUE); 
    $photos   = json_decode($batchResponse[3]['body'], TRUE); 
//========= Batch requests over the Facebook Graph API using the PHP-SDK ends ===== 


} 

?> 
+0

如何共享您的代碼以查看?不要忘記刪除你的應用密鑰,出於安全原因! – ifaour

+0

嘿,你發現哪個是問題? – luca

回答

1

最新版本我不完全知道爲什麼它的工作,但我將用戶重定向到一個包含JavaScript SDK的頁面(http://developers.facebook.com/docs/reference/javascript/),現在它正在運行!

0

用戶沒有授權的應用程序呢。試着像以前幾個月我們工作的這 -

$user_id = $facebook->getUser(); 
echo $uid; 

if($user_id){ 
    try { 
    $user_profile = $facebook->api('/me'); 

    } catch (FacebookApiException $e) { 
    error_log($e); 
    $user_id = null; 
    } 
}else{ 
    $login_url = $facebook->getLoginUrl(); 
    echo("<br>login url=".$login_url); 
}; 
+0

看起來像我目前使用的代碼。它在一個名爲「fbaccess.php」的文件中。 –

+0

拋出什麼異常?您可以使用您獲得的令牌在Graph Api Explorer中驗證此功能嗎? 圖形Api資源管理器:https://developers.facebook.com/tools/explorer –

+0

除了這部分的一切似乎工作正常... $ user = $ facebook-> getUser(); 所以我很困惑。如果網站無法訪問Facebook API,整個事情不應該停止工作嗎? –

0

的FB應用正在經歷你說的問題。 $ fb_user現在被返回undefined。 =(

+0

完全相同的腳本在另一個網站上爲我工作,這使得它更令人困惑... –

0

更新SDK,聽起來像你從幾個星期打一個證書的問題了。

你可以找到https://github.com/facebook/facebook-php-sdk/

+0

我只是試圖更新證書(以及facebook.php和base_facebook.php)。即使我登錄,$ user變量仍然爲0。 –

+0

@ViktorChangSvensson是否檢查過錯誤日誌 – phwd