我有一个页面标签应用。当用户点击“转到应用程序”并发送到我的页面选项卡编辑网址时,我正在尝试确定它们是否是页面管理员。 我尝试了两种不同的方法。我试过了该页面的唯一管理员/所有者 方法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);
答案 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
。