2012-09-08 29 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

相关问题