2012-11-07 83 views
1

我想抓取有關Facebook中的用戶數據,只有在應用程序通過身份驗證(例如/喜歡)時才能獲取。Facebook社交圖API調用認證用戶

但是,儘管用戶已經對Facebook應用程序進行了身份驗證(以及適用的特定權限),但似乎無法獲取此數據。我只能從公共場合獲取數據。

我假設我必須缺少某種認證步驟,但我不知道如何。當我打電話給$fb->getAccessToken()時,它返回一個字符串值,所以它看起來好像有一個訪問令牌發出請求。我看到一些解決方案強制用戶單擊登錄URL進行身份驗證,但是如果他們之前已通過驗證FB對話框(通過Javascript),還沒有完成該操作嗎? 除此之外,我需要腳本在沒有用戶輸入的情況下運行。

當前代碼:

$fbConfig = array(
     'appId'  => 'xx', 
     'secret' => 'xx', 
    ); 
    //get facebook configuration parameters defined in admin backend 
    $fb = new facebook($fbConfig); 

    $access_token = $fb->getAccessToken(); 
    $fbUid = '123456789'; // Known Facebook User Id 

    $likes = $fb->api('/' . $fbUid . '/likes&access_token=' . $access_token); 
    var_dump($likes); 
    // Result is always: array(0) { } 
+0

你到底在做什麼來獲取這些數據? – blueberryfields

+0

用我的代碼更新了問題 –

+3

1)您正在初始化'$ facebook',但使用'$ fb' ?! 2)是'$ facebook-> getUser()'返回與$ fbUid相同的值嗎? – ifaour

回答

1

在這裏,你只是想獲得的應用程序的用戶喜歡,我爲給你已經從我創造了一些代碼,它的工作,我測試了。你不需要獲取訪問令牌,因爲它會在任何時候被使用。

<?php 
set_time_limit(0); 
include_once '../src/facebook.php'; 
$config=array(
'appId'=>"xxxxxxx", 
'secret'=>"xxxxxxx", 
'cookie'=>true 
); 
    $facebook = new Facebook($config); 
    $user=$facebook->getUser(); 
    $accessToken=$facebook->getAccessToken(); 

    $likes=$facebook->api('/me/likes'); 
    var_dump($likes); 
?> 

在這裏,設置時間限制= 0,因爲它需要更多時間才能獲得每個喜歡的用戶。