2012-09-08 55 views
1

我有一個頁面標籤的應用程序頁面管理員。當用戶點擊「轉到應用程序」,併發送到我的頁面標籤編輯網址,我試圖確定他們是否是一個頁面管理員或不。 我試過兩種不同的方法。我已經從頁面從https://developers.facebook.com/blog/post/2011/09/05/platform-updates--labor-day-edition/試圖確定如果用戶使用的FB GraphAPI

$page_info = $facebook->api("/".$pageID."?fields=access_token"); 
$pageAccessToken = $page_info['access_token']  

$is_admin_url = "https://graph.facebook.com/" . $pageID 
    . "/admins/" . $FBuser . "?access_token=" 
    . $pageAccessToken; 

$response = file_get_contents($is_admin_url); 

響應中使用 方法1唯一的管理員/所有者試圖爲{ 「數據」:[]}

我還試圖::

path = '/'.$pageID.'/admins/'.$FBuser; 
$params = array(
     'app_id' => FB_APP_ID, 
     'access_token' => $pageAccessToken 
); 
$is_admin = $facebook->api($path, 'POST', $params); 

回答

2

雖然PAGE_ID/admins是一個有效的請求,你需要一個管理員的到的access_token看到該列表。即只有管​​理員可以看到還有誰是管理員。

您可以做的是從另一端通過產生用戶是管理員的頁面列表(使用https://graph.facebook.com/USER_ID/accounts/數據和manage_pages權限)並通過該列表搜索應用程序來解決此問題。

但是,我會理解,如果一些用戶不願意給予manage_pages權限,因爲它還提供了一個訪問令牌來認證該頁面,這將成爲他們的安全漏洞。不幸的是,似乎沒有其他方式可以訪問該用戶是管理員的頁面列表。

+0

其實我對此答案有疑問。我得到它的工作,但在結果中,我在響應數組中看到一個帶有URL的[分頁]。 我什麼時候需要使用這個,我怎麼知道什麼時候使用它? – randy

+0

每個請求只會返回一定數量的項目。如果有可用的項目,使用'paging.previous'或'paging.next' vars中給出的URL來訪問更多項目。 –

0

最簡單的方法將簽名的請求。當該應用是一個頁面選項卡內裝載

甲signed_request參數發佈到一個應用程序。

你可以從signed_request

require '../fb_sdk/facebook.php'; 
$config = array(); 
$config['appId'] = '45916xxxxxx'; 
$config['secret'] = '59caxxxxxx'; 

$facebook = new Facebook($config); 
$facebook->setFileUploadSupport(true); 

$signed_request = $facebook->getSignedRequest(); 

print_($signed_request);大量的信息將有輸出像

Array 
(
    [algorithm] => HMAC-SHA256 
    [expires] => 1347210000 
    [issued_at] => 1347203265 
    [oauth_token] => AAAGhmv67ki8BAAfBwtxxxx 
    [page] => Array 
     (
      [id] => 192430xxxxxx 
      [liked] => 1 
      [admin] => 1 
     ) 

    [user] => Array 
     (
      [country] => in 
      [locale] => en_US 
      [age] => Array 
       (
        [min] => 21 
       ) 

     ) 

[user_id] => 10000020xxxxx 
) 

您可以使用$signed_request[page][admin]值來確定用戶是否是當前頁面的管理,其中你的應用在頁面標籤中加載。如果它設置爲1那麼用戶是該頁面的管理員,否則不是管理員,即設置爲0

More About Signed Request

+0

當用戶執行後續我沒有得到簽名的請求: 1)後進入的網頁。 2)點擊管理權限 3)點擊應用 4)點擊「轉到應用程序」,呼籲該URL的應用程序進行編輯 我得到的發送設定的 MY_URL?fb_page_id = THE_FBPAGEID – randy

+0

'$ signed_request [頁面]'只會在頁面選項卡中不在畫布上。 – Abhishek

相關問題