1

我有一个页面标签应用程序。当用户单击“转到应用程序”并被发送到我的页面选项卡编辑 url 时,我试图确定他们是否是页面管理员。我尝试了两种不同的方法。我已经尝试过从https://developers.facebook.com/blog/post/2011/09/05/platform-updates--labor-day-edition/使用的页面方法 1 的唯一管理员/所有者

 $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);

响应是 {"data":[]}

我也试过::

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

2 回答 2

2

虽然PAGE_ID/admins是一个有效的请求,但您需要管理员的 access_token 才能查看该列表。即只有管理员可以看到还有谁是管理员。

您可以做的是从另一端通过生成用户是管理员的页面列表(使用https://graph.facebook.com/USER_ID/accounts/数据和manage_pages权限)并在该列表中搜索您的应用程序来解决此问题。

但是,如果某些用户不愿意给予manage_pages许可,我会理解,因为它还提供了一个访问令牌来作为该页面进行身份验证,这对他们来说是一个安全漏洞。不幸的是,似乎没有其他方法可以访问该用户是管理员的页面列表。

于 2012-09-08T23:03:43.973 回答
0

最简单的方法将是签名请求。

当应用程序在页面选项卡中加载时,将签名请求参数 POST 到应用程序。

你可以从 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]value 来确定用户是否是当前页面的管理员,您的应用程序在该页面中加载到页面选项卡中。如果设置为,1则用户是页面的管理员,否则不是管理员,即设置为0.

更多关于签名请求

于 2012-09-09T15:15:16.837 回答