受管理 Meta 账户与第三方集成

概览

受管理 Meta 账户是用于 Meta 旗下业务工具的一种账户类型。组织能够通过单点登录 (SSO) 支持和自动账户预配等管理功能管理这些账户。通过这些账户,个人可以使用其工作凭证访问 Meta 的业务工具(如商务管理平台),而无需使用其 Facebook 个人账户。

既然受管理 Meta 账户仅适用于工作,该账户类型中便存在着如下限制:

  • 没有社交时间线或 Facebook 动态消息
  • 无法在 facebook.com 上访问面向消费者的产品或界面,除了可以以公共主页身份发布帖子
  • 无法获取对个人资产的权限(必须通过业务账户获取)
  • 只能授予业务应用类型权限,不能授予 user_* 相关的权限,如 user_friendsuser_posts。请注意,受管理 Meta 账户仍可以完成登录流程请求,但会忽略 user_* 相关的权限。
发生错误
播放视频时出错

与第三方应用集成

在向受管理 Meta 账户迁移的过程中,企业会将用户访问 Meta 业务工具的方式从使用 Facebook 账户过渡到使用工作凭证。用户必须在截止日期(在企业层级决定)之前完成迁移流程,以保持对 Meta 第一方和第三方工具的访问权限。请务必注意,具体截止日期由组织为特定业务部门中的个人用户设定。成功完成迁移后,用户将能够使用其受管理 Meta 账户(而不是 Facebook 账户)登录商务管理平台,从而确保可以继续访问必要的工具和资源。

如果您的应用使用系统用户访问口令合作伙伴共享来访问客户的业务资产,您的第三方集成应不会受到影响。如果您的应用使用用户访问口令(或从用户访问口令生成的公共主页访问口令),该应用的权限以及由 Facebook 账户授予的业务资产访问权限将不会自动过渡到新的受管理 Meta 账户。用户将需要使用新受管理 Meta 账户重新授予对这些业务资产的访问权限,才能保留您的应用对这些资产的访问权限。




技术代理指南

为了主动地最大程度地减少 API 调用的可能性中断,建议您的应用提供以下功能:

  • 在口令失效之前,主动重新授予某项资产(如公共主页、广告账户)的权限。操作方法:定期检查每项资产的 user_access_expire_time 字段,并在返回时间戳时提示用户重新授权。
  • 用户为已解除绑定或即将解除绑定的资产批量重新授予资产权限。操作方法:在您的应用程序中提供“重新绑定”或“替换过期口令”按钮,用户便可一次性重新绑定其所有业务资产,而不是逐一重新绑定。该按钮应触发向您的服务器发出的 API 调用,其中应包含一个业务资产编号清单和一个新的访问口令作为参数。然后,您的服务器就可以将新访问口令用于清单中的每项业务资产并安全存储到您应用程序的数据库或存储空间中。
  • 开始测试

    使用沙盒验证您的集成是否支持受管理 Meta 账户。

    测试受管理 Meta 账户

    在您应用面板的“模拟用户”部分中,我们提供了一种方法来创建和管理被模拟的受管理 Meta 账户,以便测试 Facebook 登录在您应用中的实现情况以及应用所使用的任何权限或功能。通过利用测试用户工具的功能来创建和管理 Meta 账户模拟用户,您可以在将 Facebook 登录功能集成到自己的应用中时,确保用户登录受管理 Meta 账户后的体验更加顺畅。

    这些测试账户无法与真实用户互动,而且就您通过模拟用户生成的任何数据而言,只有您应用上的其他模拟用户或具有该应用管理员、开发者或测试者身份的真实用户才能看到。您只能通过应用面板(而不是图谱 API)来创建、编辑、删除模拟用户,以及以模拟用户的身份登录。

    限制

    请参阅主要文档,详细了解对模拟用户的限制。对 Facebook 模拟用户的限制同样适用于测试受管理 Meta 账户,只是应用只能使用 1 个测试受管理 Meta 账户。

    创建测试工作账户

    您可以在应用面板中创建模拟用户,方法如下:前往身份 > 模拟用户面板中的模拟用户部分,选择受管理 Meta 账户选项卡,然后点击创建模拟用户按钮。此操作将打开一个对话框,能让您创建一个测试账户。

    创建测试账户对话框能让您:

    • 创建一个测试工作账户。
    • 选择是否默认为每个创建的测试账户安装此应用。
    • 选择要在调用中使用的图谱 API 版本
    • 为每个测试用户授予应用权限

    创建后,模拟用户将立即显示在“受管理 Meta 账户”表格中。

    使用受管理 Meta 账户开展测试

    您可以使用一个测试账户对自己的应用开展测试,方法是:在“Facebook 登录”中使用测试受管理 Meta 账户的凭证,然后授予该应用所需的任何权限。您还可以以模拟用户身份向应用授予权限,方法是点击“受管理 Meta 账户”表格中给定模拟用户行内“选项”列中的省略号图标 (•••)。点击省略号图标后,您即可选择编辑模拟用户已授予您应用的权限、生成模拟用户的用户访问口令,以及登录模拟用户账户。

    登录该测试账户后,建议您分配成功完成应用集成所需的业务资产。为此,请前往业务设置,管理您模拟用户的业务资产组合和分配给模拟用户的资产,如公共主页、广告账户和商品目录。

    使用模拟用户模拟迁移

    您可以模拟 Facebook 用户过渡到受管理 Meta 账户时发生的业务权限变化,以便您测试用户迁移对您应用的影响。如要使用此功能,请访问该 Facebook 模拟用户,点击“选项”列中的省略号图标 (•••),点击将业务权限转移到受管理 Meta 账户,然后按指示操作。

    使用此功能必须满足以下前提条件:

  • 创建一个 Facebook 模拟用户
  • 确保该 Facebook 模拟用户有权访问一个包含资产(如公共主页或目录)的业务资产组合
  • 确保 Facebook 模拟用户已授予业务数据权限
  • 创建一个模拟用户,以将业务权限转移到该用户
  • 完成转移后,您将能够:

  • 使用此账户登录,以预览用户注册体验
  • 使用 Facebook 模拟用户的用户访问口令获取 user_access_expire_time 字段
  • Webhooks

    Webhooks 是一种工具,应用程序可借此接收有关用户的特定数据资产访问权限变更的自动通知。Webhooks 工具通过提供及时的自动更新来完善您的应用程序开发过程。订阅后,Webhooks 会向您的开发应用程序发送通知。该通知包含一个有效负载,有效负载中提供了用户的应用范围编号和过期时间。

    主要功能:

    • 提前 30 天通知:该工具会提前 30 天提醒您用户会何时启动受管理 Meta 账户迁移或延长其迁移期。
    • 访问权限过期提醒:该工具会准确告知您何时会因迁移而失去访问权限。

    注意:迁移开始后,系统将在与该迁移相关的 30 天期限开始时发送 webhooks 通知。这可以确保您的应用程序及时了解用户数据访问权限的任何关键变化,从而能够实现数据资产的无缝转换和管理。

    订阅

    如要接收通知,您需要订阅某个用户的受管理 Meta 账户迁移信息。我们将构建新的 Webhooks 供您订阅。

    如果您刚开始使用 Webhooks 产品,请按照我们的 Webhooks 入门指南设置 Webhooks 配置,并测试您订阅的 Webhooks 主题。

    如要设置受管理 Meta 账户 Webhooks,请在应用面板中前往产品 > Webhooks,从下拉菜单中选择受管理 Meta 账户,然后点击订阅以订阅此对象。

    通知

    每当受管理 Meta 账户迁移到期日(即用户的混合模式结束时间)发生变更时,我们就会发送 Webhooks 事件通知。此项变更将发生在迁移创建期间,以及用户请求混合模式延期并获得混合模式延期批准时。

    受管理 Meta 账户事件通知示例:

    {
      "field": "migration_expire_time",
      "value": {
        "user_id": "4444444444",
        "migration_expire_time" => "2024-05-04T10:00:00Z"
      }
    }
    

    迁移 API 和疑难解决

    受管理 Meta 账户迁移 API 和疑难解决文档提供了以下信息:如何确定哪些用户和业务账户正在迁移、到期日以及是否为受管理 Meta 账户。is_work_account 是一种布尔返回类型,表示用户是否在使用受管理 Meta 账户;在用户对象中可用。user_access_expire_time 字段是一个时间戳,表示用户对特定资产的访问权限何时将被撤销。该时间戳过后,该用户预计将不再拥有这些资产的管理权限。使用 Facebook 用户访问口令(访问这些特定资产需要该口令)的后续 API 调用将开始返回权限错误。user_access_expire_time 在以下对象上可用:

    限制

    user_access_expire_time 具有一些限制。它只针对用户通过迁移中企业的业务权限而具有其明确访问权限的资产返回到期时间数据。例如,只有当 Facebook 用户通过一个迁移中的业务账户成为公共主页管理员时,才会返回时间戳数据。迁移中企业所拥有的、未直接分配给用户的公共主页将不会生成时间戳。

    推荐的使用方法

    这些数据可用于各种场景,以增强您应用程序的功能,并主动减少终端客户可能遇到的身份验证和权限问题:
    • 调试从客户处收到的访问口令是否属于受管理 Meta 账户
    • 调试用户对业务资产的访问权限何时到期
    • 当用户对特定资产的访问权限即将到期时,向用户发送通知或提醒,并提示他们使用其账户进行授权,以保留功能
    • 通过检测过期的访问权限并向用户提供绑定其账户并访问这些业务资产的适当错误消息或指示,来处理 API 错误

    图谱 API 调用示例

    1. 获取 is_work_account 状态

    请求
    GET /<API_VERSION>/<USER_ID>?fields=is_work_account
    
    响应
    {
      "id": "<USER_ID>",
      "name": "Romane Richter"
      "is_work_account": true
    }
    2. 获取 30 天时间窗的 user_access_expire_time

    请求
    GET /<API_VERSION>/<OBJECT_ID>?fields=user_access_expire_time&access_token=<ACCESS_TOKEN>
    响应
    {
       "user_access_expire_time": "2023-06-23T12:00:00+00:00"
    }
    3. 迁移前的字段请求将返回空数据

    请求
    GET /<API_VERSION>/<OBJECT_ID>?fields=user_access_expire_time&access_token=<ACCESS_TOKEN>
    响应
    {}
    
    4. 迁移(user_access_expire_time 之后)30 天后发出的请求可能会抛出错误

    请求
    GET /<API_VERSION>/<OBJECT_ID>?fields=user_access_expire_time&access_token=<ACCESS_TOKEN>
    响应
    {
      "error": {
        "message": "(#100) Object does not exist, cannot be loaded due to missing permission or reviewable feature, or does not support this operation. This endpoint requires the 'pages_read_engagement' permission or the 'Page Public Content Access' feature or the 'Page Public Metadata Access' feature. Refer to https://developers.facebook.com/docs/apps/review/login-permissions#manage-pages, https://developers.facebook.com/docs/apps/review/feature#reference-PAGES_ACCESS and https://developers.facebook.com/docs/apps/review/feature#page-public-metadata-access for details.",
        "type": "OAuthException",
        "code": 100,
        "fbtrace_id": "AZdHiJUBflrZnE-RNKrHAah"
      }
    }
    

    权限和错误

    如要访问 user_access_expire_time 并对其执行 API 调用,开发者应确保所请求的权限已获得加载这些对象的权限。在提供的示例中,如果 object-id 指企业对象编号,则用户必须至少已获得加载该对象所需的 business_management 权限。详情请参阅此处
    当试图在到期时间后访问某个资产时,API 响应应返回一个带 100 的通用错误及其类型 OAuthException.。这表示该对象无法再通过 API 访问,因为该用户不再有权访问该资产。

    另请参阅

    访问技术代理集成常见问题

    API call disruptions related to managed Meta account migrations might be caused by:

    1. Users failing to migrate before the deadline set by their business/organization
    2. Users failing to re-authenticate with your apps using the managed Meta accounts