Facebook 页面 API:"Page Public Content Access" 评论截屏

Facebook pages API: "Page Public Content Access" review screencast

我的网站使用 Facebook 页面 API 从页面所有者发布的 Facebook 页面中提取 public 内容,以创建动态博客,并向 Facebook 明确 link页。

您可以在此处查看实际效果:https://kc-hrubeho.cz (ctrl+F "Facebook")。黄色按钮 "Načíst další" 用作 AJAX 分页。对不起,捷克语,很遗憾,该网站没有英文版本。

我正在使用此 URL 获取页面内容的 JSON 对象:https://graph.facebook.com/<PAGE-ID>/feed?access_token=<TOKEN>&limit=10&fields=message,link,attachments,created_time,full_picture,picture,timeline_visibility

目前有效,但App review FAQ指出:

My app used to access public content on pages, am I affected by the v3.0 changes?

Yes. Apps that access content of public pages need to request Page Public Content Access feature and require review by Facebook.

另外,还有这个通知:

In order to maintain your current API access, your app will need to be submitted for review by August 1, 2018.

我已填写表格以供审核。必填项之一是 "the screencast".

We need to see your app using Page Public Content Access so we can see that it doesn't violate our policies. Upload a video screencast walkthrough using any method, (even recording with your phone). You must show:

  1. How a person logs in with Facebook
  2. How a person sees this feature used in your app

关于截屏视频的更多详细说明说明了这一点:

You do not need to submit your app if it will only be used by you or by a reduced number of people. Any account listed in the Roles tab in your App Dashboard, such as admins, developers and testers, can access all permissions and generate a user or page access token.

You can use any of these accounts to test your app and create a screencast.

这非常令人困惑。我的问题是:

  1. 如果我的代码访问页面 API 并在我的网站上显示结果,是 "used by reduced number of people" 吗?

  2. 如果我不需要创建截屏视频,我该如何申请审核?我什至需要它吗(意思是 "will my token work after 1st August")?

  3. 如果我确实需要一个带有截屏视频的评论,我应该在我的案例中记录什么?我是否应该将我的代码和网站的几个截屏视频拼接成一个视频?那个,恕我直言,听起来很疯狂。 :)

  4. 如果我只需要阅读我自己页面的数据?

  5. 我的旧应用程序现在可以正常工作(不确定 8 月 1 日,见上文)。对于具有相同目的的应用程序(只是为了阅读应用程序所有者拥有的 FB 页面的 public 内容)创建 所有评论大惊小怪之后,是否会有相同的规则集和旧的一样吗?

提前致谢!

编辑

这是我从官方FB后援群群主那里听到的Facebook Developer Community:

You can use an app in dev mode to retrieve the feed for pages you are admin of. [...] I don't know if August 1 will change the current behavior or if the current behavior is even the intended behavior. [...] Actually I never met a person that was able to predict what will happen in 90+ days ... most experts even fail to predict tomorrow's weather ;) Seriously, I don't know ...

非常令人沮丧,但这是迄今为止我得到的最具体的答案。

If my code access the Pages API and shows the result on my website, is it "used by [a] reduced number of people"?

您很可能是应用程序中 API 的唯一消费者。由于它是后台的 AJAX 调用而不是基于登录的应用程序,因此应该适用 "reduced number" 情况。

If I do not need to create a screencast, how can I apply for a review? Do I even need it (meaning "will my token work after 1st August")?

只要共享应用程序开发人员和页面管理员角色,将应用程序切换到开发模式将确保它继续运行。


"If your app is in dev mode you should be able to get page access tokens with any permission for anybody who has a role on your app. If you just want to manage posts on your own page or the pages of users who have roles on your app, you'll be able to do so in development mode without submitting for app review." - 来自 Facebook 开发者支持的回复 https://developers.facebook.com/support/bugs/2029233277148530/(我的私人报告)


If I do need a review with a screencast, what exactly should I record in my case? Should I just stitch a few screencasts of my code and the website to a single video? That, imho, sounds just bonkers. :)

见前文。

Is there a different endpoint all together (which would not require a review or the screencast) that I should use, if I only need to read the data of my own page?

使用页面提要端点 (/PAGE_ID/feed),同时让用户既是应用程序的开发人员又在页面上具有角色应该可行,只要应用程序处于开发模式。

My old applications are working right now (not sure about August 1, see above). For applications with the same purpose (just to read public content of FB page owned by the owner of application) created after all the fuss with reviews, will there be the same rul[e]set as is for the old ones?

8 月 1 日是一组特定权限的截止日期

  • user_friends
  • user_link
  • user_gender
  • user_age_range

它的工作原理应该是一样的,因为显示页面帖子不需要这些。

使用具有 manage_pages 访问权限的用户或页面令牌,因为应用令牌无法识别您是否在页面上具有角色。

是的,这意味着您必须实施一种方法来刷新用户令牌或确保扩展页面令牌不会在后台失效。

HTTP GET /page__id_owned/feed?access_token=APP|TOKEN

Response
#10) To use 'Page Public Content Access'...

HTTP GET /page__id_owned/feed?access_token=access_token_no_manage_pages

Response
#10) To use 'Page Public Content Access'...

HTTP GET /page__id_owned/feed?access_token=access_token_manage_pages

Response
{
  "data": [
    {
      "created_time": "2018...

HTTP GET /page__id_NOT_owned/feed?access_token=access_token_manage_pages

 #10) To use 'Page Public Content Access'...

Public 页面内容与您的用例没有直接关系,即您不使用"Public Page Content"。这是针对将 public 内容作为数据流水线进行分析的场景,请参阅 https://developers.facebook.com/docs/apps/review/feature#reference-PAGES_ACCESS.

的常见用法部分
另一方面,

”页面 Public 内容访问是 应用级 功能 只读访问匿名 public 数据,包括业务元数据、public 评论、public 页面的帖子和评论(不归您应用的任何开发者所有)。 https://developers.facebook.com/docs/apps/review/feature#reference-PAGES_ACCESS" - 来自 Facebook 开发者支持的回复 https://developers.facebook.com/support/bugs/2029233277148530/(我的私人报告)


仅供参考,如果您通过了截屏视频拦截器,您仍然需要通过业务验证。如果你能通过这个,我不知道你还需要打败什么才能清除应用审查挑战。

App Review Step 2 - Business verification required The permissions and features review is complete. Next, we'll verify your business.

To do this, you may need to provide documentation like a business license or utility bill.

在与 FB 直接支持和 FB Dev Community Group 进行了多次斗争之后,我找到了一种方法来获取我的 FB 页面 public 帖子,而无需创建臭名昭著的 Page Public Content Access两个不同页面的一些比较的截屏视频 (?!)。

所以,只需几个简单的步骤:

  1. this nice FB tool
  2. 获取所需应用的用户访问令牌
  3. 按照 Page Acces Tokens Documentation 中的描述创建页面访问令牌。但一定不要跳过... using the access token ...部分。这意味着您的请求应该类似于 GET /{page-id}?fields=access_token&access_token=USER_ACCESS_TOKEN_FROM_STEP_1
  4. 然后使用 Access Token Debugger 调试将在一小时后过期的全新页面访问令牌。在底部,您会看到蓝色按钮 Extend Access Token。点击它就可以了 - 永不过期的页面访问令牌
  5. 用它来获取 Facebook 页面 public FB GRAPH 上的帖子 /page-id/posts?access_token=PAGE_ACCESS_TOKEN

更新

如果您在执行第 2 步时遇到问题(我使用过一些较旧的应用程序),请尝试使用此工具 https://developers.facebook.com/tools/explorer

最近经历了这个过程并取得了成功,以下是对我有用的方法,希望对某些人有用:

1.业务验证

这个过程相当简单,我提供了所有必需的信息和证明文件。在因公司地址证明不足而被拒绝后,我上传了其他一些文件并获得了验证(没有明显的原因为什么第一个文件不充分但其他文件是)。

2。截屏视频

这显然是棘手的部分,但这对我有用: 我正在使用网络服务收集数据并将其存储在数据库中。然后,此数据在移动应用程序中可见,因此我向他们提供了我的应用程序的登录凭据。 为了模拟我的网络服务从 Facebook 获取 public 数据的行为,我创建了一个假的 Facebook 页面,在开发人员模式下,我可以在没有 PPCA 的情况下访问该页面的数据。 在录音中我有点跟随他们Server to Server example。我用示例条目显示我的数据库,然后我的假 Facebook 页面包含我想要收集的数据。然后我 运行 我的 web 服务并显示我的页面中的数据现在在我的数据库中。最后,我解释了如何在我的应用程序中导航到这个确切的数据集。就是这样。

当我不包括对我的应用程序的访问时,这被拒绝了一次(我只显示了我数据库中的数据)。

最后一点,即使事件边缘列在您可以使用 PPCA 访问的页面 API 中,您仍然无法访问它(即 /pageID/events)。因此,如果您要获取事件数据,则无需费心使用 PPCA。

如果页面不是您的或者您不是页面的管理员,Facebook 不允许您访问数据。我问过他们,这是他们的回答:

"Ok. If the news is retrieved from your own Facebook page, rather than a public page that you don't own, you can use the pages_manage_post and pages_read_user_content permissions.

Unfortunately, I'm afraid there isn't a permission that can allow you to give your users public pages news. You can only give news from your own Facebook page."

最初我申请了Page Public Content Access许可。