2019 年行之有效的方法
我最近试图实现类似的东西(类似于这个线程中描述的用例),但我想确保尊重 Facebook 的当前政策,所以我做了一些研究,在这里我分享我的发现。
我的用例
所以,正如我已经说过的,我的用例与这里描述的非常相似;那是:
- 我正在为一个学区做一些工作。
- 他们正在使用软件工具来管理与学校交通相关的几乎所有事情。
- 该工具允许他们在发布公交车延误警报和学校停课警报时发送电子邮件通知(给订阅者)。
- 社区中的很多人在他们的 Facebook 页面上关注该组织,这是他们寻找这些警报的唯一地方。
- 因此,该组织的员工必须在 Facebook 页面上手动发布每个通知(除了在运输软件中创建它)。此外,这些通知最终会过期(或在过期前被简单地删除),因此员工必须稍后再手动删除它们。
- 时间太长了,所以我们在这里尝试做的是开发一个简单的系统,它会定期轮询软件工具的数据库以获取新的(和过期的)通知,并在 Facebook 页面上更新它们(即添加和删除)。
在我看来,这是一个合法的用例,但我不确定如何以符合 Facebook 政策的方式实施它。
接受的答案
我按照接受的答案的步骤进行操作,但情况似乎发生了变化:现在,即使生成的页面令牌没有过期,也会access to data
在大约 60 天后过期。如果您按照该过程并在FB Token Debugger Tool中检查页面令牌,您也会看到这一点。
此外,生成的页面令牌与用户帐户绑定的事实也是不幸的,因为如果用户更新他/她的密码,那么页面令牌也会失效。
如何在 2019 年做到这一点
经过几个小时的研究,我偶然发现了以下 Facebook 文档文章:直接业务的业务登录。
事实证明,现在可以按照上述文章中描述的步骤生成一个与任何特定 Facebook 用户帐户无关且不会过期的页面令牌(除非 FB 应用程序被删除或底层应用程序令牌被删除了,你知道...)
所以这里是步骤和最重要的部分:
- 您需要一个商务管理平台帐户。
- 您需要将目标 Facebook 页面添加到该帐户。
- 您需要创建一个 Facebook 应用程序,并将该应用程序转移到同一个商务管理平台帐户。
- 该应用程序必须通过 Facebook 的审核流程,因为需要以下权限:
manage_pages
和publish_pages
.
- 重要说明要使使用生成页面令牌发布的帖子对应用程序管理员以外的用户可见,该应用程序需要已发布和批准。
- 您仍然可以在不提交审核的情况下尝试该概念,但这些帖子不会公开可见。
- 在 Business Manager 帐户中(仅在您的应用程序和页面添加到帐户后),您需要创建所谓的系统用户,并将该用户的管理员角色(或权限)授予目标 Facebook 页面。
- 系统用户归商务管理平台帐户所有,不与特定用户绑定。我目前的理解是,系统用户的一个主要用例是以编程方式访问 Facebook 的 Graph API(正是我们所需要的)。
- 然后,对于该系统用户,您需要生成一个访问令牌(永不过期)。系统将提示您选择哪个应用程序。然后,您将选择您的目标应用程序。
- 然后,您将需要使用生成的应用令牌来生成页面令牌,该令牌也将永不过期。该过程在本文中描述为:
GET /<PAGE_ID>?fields=access_token&access_token=<SYSTEM_USER_ACCESS_TOKEN>
该令牌永远不会过期,也不会绑定到特定的 Facebook 用户,所以这正是我们所需要的!
最后一部分是确保您的 Facebook 应用程序获得 Facebook 的批准。这实际上是最重要的部分,因为如果人们看不到我们的帖子,整个过程就毫无价值。
我想确定我可以依靠上述过程为我的客户构建一些东西,而最终 Facebook 不会拒绝它,所以,事先(即在开始处理我客户的项目之前),我经历了整个过程创建一个页面、一个应用程序、一个商务管理平台帐户等。我验证了我的业务。我提交了我的应用程序以供审核。在我的请求中,我对我的用例非常具体,并强调该应用程序是“自用”的(即该组织正在为自己开发应用程序,而不是为其他 Facebook 用户)。我在不到 24 小时内就获得了批准。
关于应用审核流程的其他一些说明:
- 我必须为应用程序选择一个平台,所以我选择了website。
- 我必须说明为什么应用程序需要这两个权限以及它将如何使用它们。
- 我必须说明为什么审阅者无法登录我的应用程序并尝试它(即因为该应用程序将由工作进程使用)。
- 对于强制截屏,我只是使用
curl
实用程序在终端中进行手动操作(生成页面令牌并在 Facebook 页面上发布帖子)。我还展示了如何使用 Business Manager 将系统用户链接到页面并生成令牌,等等。
- 同样,我对我的用例非常具体,我认为这很有帮助。
我希望这些信息对有类似用例的人有用。