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