管理公共主页

本文档将介绍如何在 Facebook 公共主页上执行以下任务:

  • 获取您可以在其上执行任务的公共主页的清单,其中包括:
    • 您可以在每个公共主页上执行的特定任务
    • 每个公共主页的公共主页访问口令(可用于测试 API 调用)
  • 获取并更新公共主页详细信息
  • 获取并更新公共主页设置
  • 接收 Meta 将在公共主页上实现的更改建议相关的通知
    • 接受或拒绝这些建议的更改
  • 获取对公共主页的点评
  • 在公共主页上屏蔽用户

准备工作

本指南假设您已阅读这篇公共主页 API 概览

对于能够在公共主页上执行任务的用户,您需要实现 Facebook 登录,以请求以下权限并接收用户访问口令或公共主页访问口令:

  • pages_manage_engagement
  • pages_manage_metadata
  • pages_manage_posts
  • pages_read_engagement
  • pages_read_user_engagement
  • pages_show_list
  • publish_video 权限(如果您要在公共主页发布视频)

如要在 API 请求中使用企业系统用户,则需要 business_management 权限。

您的应用用户必须能够在 API 请求中涉及的公共主页上执行 CREATE_CONTENTMANAGE 和/或 MODERATE 任务。

最佳实践

测试 API 调用时,您可以在调用中加入 access_token 参数,并将其设为您的访问口令。但是,从您的应用发出安全调用时,应使用访问口令类

为方便阅读,请求示例的格式已经过调整。请将粗体、斜体值(例如 page_id)替换为您的值。

公共主页、任务和口令

对于您可以在其上执行任务的公共主页,调用一次 API 可为您提供大量与该公共主页相关的信息。

获取公共主页

如要获取您可以在其上执行任务的公共主页完整清单、您可以在每个公共主页上执行的所有任务以及每个公共主页的短期公共主页访问口令,请使用用户访问口令向 /user_id/accounts 端点发送 GET 请求。

请求示例

curl -i -X GET 
     "https://graph.facebook.com/user_id/accounts"

若请求成功,应用收到的 JSON 响应中将包含一个公共主页对象数组。每个公共主页对象都包含:

  • 公共主页名称
  • 公共主页编号
  • 公共主页类别、类别名称和编号
  • 短期公共主页访问口令
  • 用户可在公共主页上执行的所有任务

响应示例

{
  "data": [
    {
      "access_token": "{facebook-for-developers-page-access-token}",
      "category": "Internet Company",
      "category_list": [
        {
          "id": "2256",
          "name": "Internet Company"
        }
      ],
      "name": "Facebook for Developers",
      "id": "{facebook-for-developers-page-id}",
      "tasks": [
        "ANALYZE",
        "ADVERTISE",
        "MODERATE",
        "CREATE_CONTENT"
      ]
    },
    {
      "access_token": "{my-outlandish-stories-page-access-token}",
      "category": "Blogger",
      "category_list": [
        {
          "id": "361282040719868",
          "name": "Blogger"
        }
      ],
      "name": "My Outlandish Stories",
      "id": "{my-outlandish-stories-page-id}",
      "tasks": [
        "ANALYZE",
        "ADVERTISE",
        "MODERATE",
        "CREATE_CONTENT",
        "MANAGE"
      ]
    },
...
  ]
}

获取其他用户的任务

如果您可以在某个公共主页上执行 MANAGE 任务,您可以获得可在该公共主页上执行任务(包括每个用户都可以执行的任务)的其他用户名单。

如要获取用户名单和他们可以在该公共主页上执行的任务清单,请向 /page_id/roles 端点发送 GET 请求。

请求示例

curl -i -X GET "https://graph.facebook.com/page_id/roles"

若请求成功,应用收到的 JSON 响应中将包含用户的姓名、其公共主页范围编号以及每个用户都可以在该公共主页上执行的任务。

响应示例

{
  "data": [
    {
      "name": "Person One",
      "id": "page_scoped_id_for_one"
        "tasks": [
          "ANALYZE"
        ]
    },
    {
      "name": "Person Two",
      "id": "page_scoped_id_for_two",
      "tasks": [
        "ANALYZE",
        "ADVERTISE",
        "MODERATE",
        "CREATE_CONTENT",
        "MANAGE"
      ]
    },
...
  ],
}

公共主页详细信息

如果您可以在某个公共主页上执行 MANAGE 任务,您就可以使用公共主页访问口令(或者,如果您的应用已获批使用公共主页公开内容访问权限功能,您就可以使用用户访问口令)来查看该公共主页的详细信息,如简介、邮件、营业时间等。

获取详细信息

如要获取公共主页的详细信息,请向 /page_id 端点发送 GET 请求,在其中加入 fields 参数,并将值设为要查看的公共主页详细信息。

注意:在使用公共主页公开内容访问权限功能时,您可以使用 /pages/search 端点找到公共主页编号。

请求示例

curl -i -X GET "https://graph.facebook.com/page_id \
     ?fields=about,attire,bio,location,parking,hours,emails,website"

若请求成功,应用收到的 JSON 响应中将包含您请求获得的字段值。如果系统未在响应中以某个字段作出回应,则说明未对公共主页设置此值。例如,如果未对公共主页设置 attire 字段,则不会在响应中以此字段作出回应。

更新详细信息

如果您可以在某个公共主页上执行 MANAGE 任务,您就可以使用公共主页访问口令向 /page_id 端点发送 POST 请求,并在其中加入要更新的参数,如 about 参数。

请求示例

curl -i -X POST "https://graph.facebook.com/v21.0/page_id" \
     -H "Content-Type: application/json" \
     -d '{
           "about":"This is an awesome cafe located downtown!",
         }'

若请求成功,应用收到的 JSON 响应中将包含 success,值已设为 true

Meta 建议的更改

有时,Meta 会针对您的公共主页详细信息提出更改建议,如纠正错别字或更新您公共主页上的类别,使人们更容易找到您的公共主页。如要获得这些通知,您必须订阅 page_upcoming_change 和/或 page_change_proposal Webhooks。

收到通知后,您可以立即执行以下操作之一:

  • 不采取任何操作,更改会在通知中指定的时间自动生效
  • 主动接受更改,更改立即生效
  • 主动拒绝更改,不做任何更改

接受或拒绝更改建议

如要主动接受或拒绝更改建议,请向 /page_change_proposal_id 端点发送 POST 请求,并在其中加入 accept 字段(将值设为 true 为接受更改;将值设为 false 为拒绝更改)。page_change_proposal_id 是您在 page_upcoming_change Webhooks 通知中收到的 proposal.id 值或您在 page_change_proposal Webhooks 通知中收到的 value.id 值。

curl -i -X POST "https://graph.facebook.com/v21.0/page_change_proposal_id" \
     -H "Content-Type: application/json" \
     -d '{
           "accept":"true",
         }'

若请求成功,应用收到的 JSON 响应中将包含 success,值已设为 true

公共主页设置

如果您可以在某个公共主页上执行 MANAGE 任务,您就可以使用公共主页访问口令向 /page_id/settings 端点发送 GET 请求,以获取该公共主页的完整设置清单。

请求示例

curl -i -X GET "https://graph.facebook.com/v21.0/page_id/settings"

若请求成功,应用收到的 JSON 响应中将包含一个对象数组,其中每个对象的 setting 都已设为一项公共主页设置和值(truefalse)的组合。

响应示例

{
  "data": [
    {
      "setting": "USERS_CAN_POST",
      "value": false
    },
    {
      "setting": "USERS_CAN_MESSAGE",
      "value": true
    },
    {
      "setting": "USERS_CAN_POST_PHOTOS",
      "value": true
    },
    ...
  ]
}

更新设置

如要更新公共主页设置,请向 /page_id/settings 端点发送 POST 请求,在其中加入 option 参数,并将其值设为要更新的公共主页设置。

请求示例

curl -i -X POST "https://graph.facebook.com/v21.0/page_id/settings" \
     -H "Content-Type: application/json" \
     -d '{
           "option":{"USERS_CAN_MESSAGE": "true"},
         }'

若请求成功,应用收到的 JSON 响应中将包含 success,值已设为 true

获取点评

您可以获取对公共主页的点评(包括点评人的姓名、其公共主页范围编号、是否是正面或负面建议以及点评文本),通过向 /page_id/ratings 端点发送 GET 请求即可获取。

请求示例

curl -i -X GET "https://graph.facebook.com/page_id/ratings" 

若请求成功,您的应用会收到一个 JSON 数组,其中包含多个点评对象。每个对象都包含:

  • created_time,设置为点评的创建时间
  • recommendation_type,设置为 positivenegative
  • review_text,设置为点评内容
  • reviewer 对象,其中包含该点评用户的 nameid
{
  "data": [
    {
      "created_time": "unixtimestamp",
      "recommendation_type": "positive",
      "review_text": "I love this page!",
      "reviewer": {
        "name": "Person One",
        "id": "psid_for_one"
      }
    },
    {
      "created_time": "unixtimestamp",
      "recommendation_type": "positive",
      "review_text": "This page is wonderful!",
      "reviewer": {
        "name": "Person Two",
        "id": "psid_for_two"
      }
    },
...
  ]
}

屏蔽用户

如要屏蔽某位用户,禁止其在某个公共主页上发表评论,请向 /page_id/blocked 端点发送 POST 请求,在其中加入 user 参数,并将值设为要屏蔽的用户的公共主页范围编号。

请求示例

curl -i -X POST "https://graph.facebook.com/v21.0/page_id/blocked"
     -H "Content-Type: application/json" \
     -d '{
           "user":"psid_to_block",
         }'

若请求成功,应用收到的 JSON 响应中将包含公共主页范围编号,值已设为 true

{
 "psid_to_block": true
}