【问题标题】:How can i get the admins user id of a page in facebook.?如何在 facebook 中获取页面的管理员用户 ID。
【发布时间】:2012-02-18 12:54:36
【问题描述】:

如何使用 grapg API 在 facebook 中获取页面的管理员用户 ID。?

例如:这将给出肯德基页面的详细信息

https://graph.facebook.com/126380033352

{
  "id": "126380033352",
  "name": "I Love KFC",
  "picture": "http://profile.ak.fbcdn.net/hprofile-ak-snc4/50510_126380033352_4943708_s.jpg",
  "link": "http://www.facebook.com/Official.KFC",
  "likes": 543485,
  "category": "Food/beverages",
  "username": "Official.KFC",
  "founded": "1929",
  "about": "KFC United Kingdom. Finger Lickin' Good.",
  "can_post": true,
  "talking_about_count": 8965,
  "type": "page"
}

我需要获取页面管理员的用户 ID..?我已经检查了权限,但我不知道如何获得。?

【问题讨论】:

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


    【解决方案1】:

    首先:用户必须是该页面的管理员。

    具有“manage_pages”权限,请求GET https://graph.facebook.com/[PAGE_ID]?fields=access_token 作为回应,将获得一个页面管理员 access_token。 现在使用页面admin access_token 请求GET https://graph.facebook.com/[PAGE_ID]/admins

    作为响应,您将获得管理员列表、他们的 ID 和用户名。

    参考: http://developers.facebook.com/docs/reference/api/page/

    【讨论】:

    • 普通用户无法获得..?
    • “谁是页面的管理员”此信息不公开。因此,在该页面的任何管理员许可的情况下,您都无法获取该信息。
    • 正确,获得令牌的用户访问令牌必须是该页面的管理员才能查看管理员列表。
    • 所以绝对没有办法检查页面管理员或页面创建者?
    • @yaqoob 除非你是 NSA :P
    【解决方案2】:

    您无法获取应用的所有管理员用户,但您可以测试任何 uid。

    首先您需要授予“manage_pages”权限,然后查询 page_admin 表。 当前用户的 FQL 实现如下所示:

    $isAdmin = false;
    $hasManagePerm = false;
    
    try{
        $responses = $facebook->api('fql', 'GET', Array('q' => Array(
            'hasManagePerm' => 'SELECT manage_pages FROM permissions WHERE uid=me()',
            'isAdmin' => 'SELECT 1 FROM page_admin WHERE uid=me() AND page_id=' . APP_FB_ID,
        )));
        foreach ((Array)$responses['data'] as $response) {
            if($response['name'] == 'hasManagePerm') {
                $hasManagePerm = !empty($response['fql_result_set'][0]['manage_pages']);
            } else if($response['name'] == 'isAdmin') {
                $isAdmin = !empty($response['fql_result_set']);
            }
        }
    } catch (Exception $ex) {
    
    }
    
    if(empty($hasManagePerm)) {
        throw new AdminPanelAccessRestrictedException("perm");
    }
    
    if(empty($isAdmin)) {
        throw new AdminPanelAccessRestrictedException("admin");
    }
    

    WHERE APP_FB_ID - 应用程序 ID

    【讨论】:

      【解决方案3】:

      如果您不喜欢 Graph 对象,您可以随时使用 FQL

      fql?q=SELECT uid, page_id, type FROM page_admin WHERE page_id = {pageId}

      返回这个:

      {
        "data": [
          {
            "uid": "6905135096",
            "page_id": "{pageId}",
            "type": "ATHLETE"
          },
          {
            "uid": "14408356540",
            "page_id": "{pageId}",
            "type": "ATHLETE"
          },
          {
            "uid": "51936644133",
            "page_id": "{pageId}",
            "type": "ATHLETE"
          },
          {
            "uid": "7230226073",
            "page_id": "{pageId}",
            "type": "ATHLETE"
          }
        ]
      }
      

      【讨论】:

        【解决方案4】:

        @Sarim 的“/admins”链接在 Graph API 2.1 之后被弃用。
        FB Graph API 2.2 及以上使用'/roles'

        【讨论】:

          猜你喜欢
          • 2018-10-28
          • 2012-03-09
          • 1970-01-01
          • 2018-05-11
          • 2011-02-27
          • 1970-01-01
          • 2013-05-28
          • 2011-12-04
          • 1970-01-01
          相关资源
          最近更新 更多