我正在使用PHP SDK制作基于web的Facebook应用程序。
我正试图获得所有页面的列表,用户管理,并显示给用户。
这是目前不工作,即使我在测试应用程序中测试它,在那里你不需要得到扩展权限审查和接受。
if (isset($session)) {
// graph api request for user data
$request = new FacebookRequest( $session, 'GET', '/me?fields=id,name,accounts' );
$response = $request->execute();
//get response
$graphObject = $response->getGraphObject();
$name = $graphObject->getProperty('name');
$id = $graphObject->getProperty('id');
$email = $graphObject->getProperty('email');
$accounts = $graphObject->getProperty('accounts');
echo "Your name is: ";
echo "$name.";
echo "<br>$accounts";
}
任何帮助都非常感谢
这很奇怪,但我没有找到FacebookRequest->execute()方法…但是我找到了一个适合我的解决方案:
function GetPages()
{
$token = 'CurrentUsersTokenIsHere';
// Instantiates a new Facebook super-class object from SDK Facebook'Facebook
$fb = new Facebook([
'app_id' => $fb_app_id,
'app_secret' => $fb_app_secret
]);
$response = $fb->get(
'/me?fields=accounts,name,email',
$token
);
$graphObject = $response->getDecodedBody();
$fbUserName = $graphObject['name'];
$fbUserEmail = $graphObject['email'];
$fbUserID = $graphObject['id'];
$pages = $graphObject['accounts'];
// In general there is an array and you can get each page like:
$singlePage = $pages['data']['0'];
$pageName = $singlePage['name'];
$pageCategory= $singlePage['category'];
$pageID = $singlePage['id'];
return $pages;
}
还有一点,为了便于理解,$graphObject['accounts']它是一个数组,看起来像
array(
'data' => array (
0 => array (
'access_token' => 'someToken',
'category' => 'Some category',
'name' => 'Some name',
'id' => 'Some id',
'perms' => array (
0 => 'CREATE_ADS',
1 => 'BASIC_ADMIN',
),
),
1 => ...
),
'paging' => array (
'cursors' =>array (
'before' => 'Mzc4MDAwOTcyMjE4MTYw',
'after' => 'MTQ1MTM2NzgxNTE0MDkwMAZDZD',
),
),
);
- 确保您有
manage_pages
权限 - 在图形API资源管理器中尝试使用相同的访问令牌进行相同的调用,如果不存在则不是PHP SDK问题
- 试着调试
$response
,看看里面有什么
首先,<page_id>/admins
结束点在v2.2及更高版本中已弃用,请在这里检查,但如果您的版本是v2.1,您可以执行
$request = new FacebookRequest( $session, 'GET', '<your_page_id>/admins' );
$response = $request->execute();
// Todo with $response
注意:请确保您将此请求与页面访问令牌一起发送