尝试使用FB Graph API确定用户是否是页面管理员

时间:2012-09-08 19:37:38

标签: facebook facebook-graph-api facebook-php-sdk

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

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

2 个答案:

答案 0 :(得分:2)

虽然PAGE_ID/admins是有效请求,但您需要使用admin的access_token来查看列表。即只有管​​理员才能看到其他人是管理员。

您可以做的是通过产生用户管理的页面列表(使用https://graph.facebook.com/USER_ID/accounts/数据和manage_pages权限)从另一端处理此问题并搜索该列表为您的申请。

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

答案 1 :(得分:0)

最简单的方式是签署请求。

当应用程序加载到页面选项卡中时,signed_request参数将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]值来确定用户是否是当前页面的管理员,您的应用在页面标签中加载了该页面。如果它设置为1,那么用户是该网页的管理员,而不是管理员,即设置为0

More About Signed Request