Facebook API,获取页面用户管理员(manage_pages)


Facebook API, getting pages user admins (manage_pages)

我正在使用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',
                    ),
                  ),
);
  1. 确保您有manage_pages权限
  2. 在图形API资源管理器中尝试使用相同的访问令牌进行相同的调用,如果不存在则不是PHP SDK问题
  3. 试着调试$response,看看里面有什么

首先,<page_id>/admins结束点在v2.2及更高版本中已弃用,请在这里检查,但如果您的版本是v2.1,您可以执行

$request = new FacebookRequest( $session, 'GET', '<your_page_id>/admins'  );
$response = $request->execute();
// Todo with $response

注意:请确保您将此请求与页面访问令牌一起发送