2014-02-27 55 views
0

我試圖檢索授權的Facebook用戶有權訪問的頁面列表,通過使用PHP SDK的Facebook應用更新。什麼Facebook應用程序設置確定數據是否發佈?

require_once('facebook.php'); 

$config = array(
    'appId' => APPID, 
    'secret' => SECRET, 
    'cookie' => true, 
); 

$facebook = new Facebook($config); 

$params = array(
    'method' => 'fql.query', 
    'query' => "select page_id, name from page where page_id in (select page_id from page_admin where uid = me())", 
); 

$result = $facebook->api($params); 

print_r($result); 

當我們將這個FQL放到Facebook的Graph Explorer中進行測試時,它給了我們以下(正確的)數據。

{ 
    "data": [ 
    { 
     "page_id": 1234567689, 
     "name": "A page we have access to" 
    }, 
    { 
     "page_id": 987654321, 
     "name": "Another page we have access to" 
    } 
    ] 
} 

當我們使用PHP SDK時,它返回一個沒有值的數組。我已驗證我們在應用程序設置中擁有manage_pages權限。此外,如果我將FQL參數簡化爲:

$params = array(
     'method' => 'fql.query', 
     'query' => "SELECT name from user where uid = me()", 
    ); 

這適用於Graph Explorer和Facebook PHP SDK。這導致我相信問題是應用程序區域中的一些隱藏設置影響了第一個FQL查詢。順便說一下,在使用Graph Explorer時,我們需要成功返回數據的唯一權限是manage_pages,所以我不認爲這是一個權限問題。

有沒有人遇到過這個或有人成功返回Facebook用戶管理的頁面列表?關於如何開始調試的任何想法?有沒有其他方法可以檢索我們想要的信息,以防這是一種錯誤?

+0

輸出您的腳本用於進行調用的訪問令牌('$ facebook-> getAccessToken()'),並且[檢查它是否具有權限](https://developers.facebook.com/tools/調試)... – CBroe

+0

當我輸出$ facebook-> getAccessToken()我收到一個字符串返回大約70-80隨機字符。有沒有辦法通過解密來實際*查看權限? – OrangeFrog

+0

您如何點擊我發佈的__link__,天才......? ;-) – CBroe

回答

0
$loginUrl = $facebook->getLoginUrl(
     array(
      'scope'  => 'manage_pages,read_stream', 
      'redirect_uri' => RETURN_ADDRESS, 
     ) 
); 

原來,當您生成登錄請求時,您可以選擇設置應用程序的範圍。在我們的範圍內,即使應用程序確實沒有設置manage_pages。

希望這會有所幫助 - 花一天時間的更好的一部分時間來認識到,您的要求和提供的是分開管理的。

相關問題