如何获取 Facebook 页面的事件?

Posted

技术标签:

【中文标题】如何获取 Facebook 页面的事件?【英文标题】:How can I get the events for a Facebook page? 【发布时间】:2018-04-13 22:01:13 【问题描述】:

使用最新版本 (2.12) 的 Facebook API,我尝试使用 Graph API Explorer 获取页面的(公共)事件。

但是,我似乎无法让它工作:

当我将鼠标悬停在左侧灰色的“id”或“name”上时,它显示“字段为空或访问令牌不允许”。

现在我在这里用作示例的页面是 Techcrunch,他们即将举办许多活动。所以“空”似乎不是问题。

在“不允许”方面,我检查了https://developers.facebook.com/docs/graph-api/reference/page/events/ 上的 API 参考。

但是,我在这里似乎也找不到任何问题。它说“阅读页面事件需要有效的页面访问令牌或具有基本权限的用户访问令牌。”。

我在这里缺少什么?非常感谢任何提示!

【问题讨论】:

【参考方案1】:

访问https://developers.facebook.com/docs/graph-api/changelog/breaking-changes#pages-4-4

目前 Facebook 不会返回使用 Pages API 的页面的事件,除非您使用用户访问令牌并且该用户已被邀请参加该页面的任何活动或正在参加/对该页面的任何活动感兴趣。

【讨论】:

好的,这听起来像是一个解释。但是,我看不出它在哪里说。那是正确的链接吗?也许我是盲人? 只是为了确认一下:我已经尝试在参加活动后使用用户访问令牌(点击“感兴趣”) - 有效。 对我来说,目前还不是 100% 清楚,但现在似乎要访问 Pages API 端点,例如“/page/events”,您需要一个页面权限,例如 manage_pages (这要求页面的所有者授予您的应用程序访问该页面事件的权限。他们在文中说,所有新应用都必须经过 App Review 才能获得对 API 的访问权限。如果您的应用未获得任何 Pages API 许可,则必须在审核恢复后进行审核。这种变化非常突然,所以我们需要等待接下来的几天,看看情况会如何发展:| 谢谢,这很有帮助。让我们希望这会尽快得到解决! 感谢扎克伯格搞砸了我的网站!【参考方案2】:

正如 unknow_b 所说:

目前要访问事件,您还可以使用用户端点,例如“/me/events”或“/me/events/not-replied”,并使用对该用户有效的访问令牌。您可以获取用户被邀请参加或正在参加/感兴趣的活动

但访问令牌用户只工作 1 小时! 有人有更好的主意吗?

【讨论】:

这可能不是很有帮助,但由于我希望获得 PUBLIC 事件,我目前正在研究使用 Scrapy 获得事件。远非理想,但在 FB 修复其 API 之前是一种解决方法。 我也想参加 PUBLIC 活动。什么是 Scrapy 以及如何使用它? 关于这一点,您可以获得长期存在的令牌并刷新访问令牌。阅读[[developers.facebook.com/docs/facebook-login/access-tokens/… 这里只是一个快速更新:我研究了 Scrapy 从 Facebook 获取公共事件。然而不幸的是,这比我希望的要复杂。主要原因是 Facebook 通过 javascript 在事件页面上加载了大部分内容。因此,只有在 Scrapy “看到”页面后才会加载内容。现在有办法解决这个问题(例如,***.com/questions/8550114/…),但现阶段这对我来说似乎工作量太大。 我对长期存在的令牌也有同样的想法。他们也禁用了这些,因为它与图形 api 和业务页面数据有关。【参考方案3】:

我正在尝试做同样的事情:从页面获取公共事件。与上述建议相关:

我在两周前尝试了短暂的用户访问令牌,它的工作时间很短。现在它不再了。适合你们吗? 长期用户令牌、使用短期或长期用户令牌生成的页面令牌也不返回任何事件。

在https://developers.facebook.com/docs/apps/review/#platforms,Facebook 声明:

从 2018 年 4 月 4 日起,所有应用(包括之前获得批准的应用)必须经过应用审核才能访问 Events API、Groups API 和 Pages API。应用程序审核恢复后,访问事件 API 和组 API 的应用程序将失去访问权限并需要审核。

因此,接受审查可能会有所帮助。我会进一步报告。

更新 1:this related bug 报告的答案更清楚地说明了这一点:

应用审查需要使用以下优势:GET /page/events 和 GET /me/events

与此同时,他们取消了对 Graph API 3.0 更改的所有待审核请求,因此我必须重新提交。

更新 2:我的项目被拒绝了,我现在不想继续了。

【讨论】:

我们已经重新提交,但几周以来刚刚取消或等待批准。他们没有沟通,也没有正确的回答来获得批准。 facebook 事件 api 的可怕经历 嘿@TejasTank,我在应用审查中被拒绝了一次并放弃了。到目前为止你有什么成功吗? No 然而,我们没有得到批准,他们甚至没有拒绝请求。这意味着 Facebook 没有积极处理审批流程。甚至我的另外 2 个帐户我也做了同样的事情,但没有从 facebook 方面进行交流。【参考方案4】:

是的。 Facebook 已经取消了用于页面访问令牌的 Graph API。我在生产中使用了此代码 2 年,效果很好。检索数据的唯一方法(或大约一周前)是持续约 2 小时的临时用户令牌。这完全打破了我乐队的日程安排页面。我已经通过各种途径,甚至通过电话与知道这一点的 Facebook 广告团队员工交谈。她似乎很同情我,但对我没有解决办法。我会指望它会下降一段时间。

【讨论】:

最糟糕的是,很难看出限制对公共页面的访问对安全问题有何影响。我的感觉是 Facebook 正在抓住时机关闭该 API 功能,因为他们认为这对他们新的本地活动应用程序 Facebook Local 构成威胁。 没错。显示与其关联的业务页面的页面数据的页面访问令牌甚至不要求查看者的数据。我不知道为什么 facebook 认为有必要停止这项服务。【参考方案5】:

我刚刚创建了一个python脚本,你可以see here。它查询给定的 facebook 页面及其事件,并将数据放入 mysql 表中。

【讨论】:

【参考方案6】:

我终于找到了解决这个问题的方法。在您的 fb 应用程序上,您必须禁用密钥要求。这可以在您的 fb 应用程序控制台的高级设置下找到。它被称为“需要应用程序机密”。

生成 fb PAGE 访问令牌后,您将获得一个 fb 页面令牌,然后对其进行扩展。这是令牌调试器:https://developers.facebook.com/tools/explorer/

您可以按照此处的说明以编程方式扩展访问令牌:https://developers.facebook.com/docs/facebook-login/access-tokens/expiration-and-extension

https://developers.facebook.com/docs/facebook-login/access-tokens/#pagetokens

访问令牌调试器中还有一个扩展工具(只需点击调试,扩展按钮在左下角):https://developers.facebook.com/tools/accesstoken/

【讨论】:

嗯,我的应用从未需要应用密钥,仍然无法运行。 hmmm .. 这个答案专门用于使用图形 api 从具有延长寿命访问令牌的 biz 页面中提取 fb。 一个扩展的页面令牌无限期地持续,但我认为它仍然可以被撤销,就像授予它的用户更改了他们的密码或其他一些安全问题,比如几周前 Facebook 发现安全漏洞和注销所有人。至少我很确定在使用 API 之前我已经在我的应用程序中看到了一条调试消息,例如“这个令牌被撤销,因为用户更改了他们的密码”。如果我错了,请纠正我。 就个人而言,我正在尝试使用页面令牌将事件和视频等数据从我的页面获取到我的网站上。我确实使用了扩展页面令牌,但我的网站上有一个未列出的 URL,它有一个 Facebook 登录名,然后扩展它并获取页面令牌,然后缓存它。这样,如果在应用程序运行时令牌被撤销,我可以访问该 URL 并再次登录。如果用户没有被授权访问我的特定页面,例如某个随机人访问该 URL,它只会丢弃登录。这可能是矫枉过正耸耸肩【参考方案7】:

由于 Facebook 分析的丑闻,它似乎不再有效(请参阅 Why does Facebook Graph API say my account is non-active?)。

在流行的插件facebook-events-by-location-core,你可以看看issue#29的讨论。那里已经很好地解释了,我认为我们不会再有办法在可用的公共 API 中获取数据。

也有传言说这是对他们(已死?)Facebook Local 应用程序的竞争,但对此不确定。

【讨论】:

【参考方案8】:

是的,我们早在 2016 年就有了一个工作产品(几乎就像它的继任者 Fb Local 一样)。我们在信使聊天机器人上货币化并准备好销售活动门票。 想法是解决超本地活动的发现+预订问题。我们倒闭了,现在看到当地的 Facebook 很心痛。

enter image description here

【讨论】:

我们产品/业务的详细信息linkedin.com/pulse/…

以上是关于如何获取 Facebook 页面的事件?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用新的 facebook graph api v2.4 从页面获取事件

如何通过事件 ID 获取 Facebook 事件?

如何从codeigniter中的事件ID获取facebook事件?

获取 Facebook 页面的事件

如何使用 Web 服务从 iPhone 版 Facebook 获取事件、生日、好友列表、事件?

使用 graph Api 获取 Facebook 页面事件