给定 Facebook 公开帖子的 URL,如何在 FB Graph API 中找到帖子对象? (其次,为什么在通过 API 访问时有这么多用户提要是空的或几乎是空的?)
我们希望能够 comment on或 like通过 v2.x 发帖 图形 API,给定帖子的 URL。这样做需要帖子的对象 ID,我们可以对其进行一些有根据的猜测,但是访问 通过 API 的实际对象已被证明是不可靠的(适用于某些帖子,但 不是其他人)。
引入了 API 的 v2 app-scoped user IDs ,并且帖子 ID 通常看起来 采用 {app-scoped user id}_{unique post id} 的形式。这里有 使用各种组合在 API 中查找帖子的一些尝试的详细信息 这些 ID(全局用户 ID、应用范围内的用户 ID 和帖子 ID)。
从一个简单的例子开始:https://www.facebook.com/evan.prodromou/posts/10153023417510505 .主要特征是它是公开的,它不是另一个帖子的分享,最重要的是它没有照片,这为单张照片和照片集添加了额外的 ID 和 URL。 Evan 的个人资料也是公开的,即 https://www.facebook.com/evan.prodromou不显示通用此内容当前不可用
尝试来自该 URL 的裸帖子 ID,/v1.0/10153023417510505和 /v2.2/10153023417510505两者都给出不支持的获取请求(代码 100)错误。
Evan 的全局用户 ID 是 525575504。将其附加为前缀 /v1.0/525575504_10153023417510505和 /v2.2/525575504_10153023417510505仍然都给出相同的 Unsupported get request 错误。
使用他的应用范围用户 ID 时出现同样的错误,/v2.2/10152350676805505_10153023417510505 .
好的,让我们试试另一个方向。我们将翻阅用户的提要,直到找到有问题的帖子。感觉这更像是 API 的预期用例...
全局/v2.2/525575504/posts和应用程序范围 /v2.2/10152350676805505/posts什么都不返回,但是 /v1.0/525575504/posts返回最近的两个帖子,this like和 this post .不知道为什么只有这两个,尽管最近有很多其他公开帖子。在两个 api 版本中,可以通过其
id
字段获取 like,即 /v1.0/525575504_10153045879215505和 /v2.2/10152350676805505_10153045879215505 ,但是当通过其 id 字段获取帖子时,这两个 API 版本都会返回 Unsupported get request 错误,例如/v1.0/525575504_351575675029953和 /v2.2/10152350676805505_351575675029953正在尝试另一个公开帖子,这个有图片:https://www.facebook.com/andigalpern/posts/678121182314631 . /v1.0/100003502653187_678121182314631 , /v2.2/100003502653187_678121182314631 , 和 /v2.2/499657186827699_678121182314631全部错误。
/v1.0/100003502653187/posts仅包含一个帖子、一个赞和 /v2.2/100003502653187/posts是空的。
供引用,这里是the GitHub issue我们一直在跟踪这个问题。
最佳答案
基本上你需要 read_stream
为此(你的应用程序不会被授予)。是的,即使帖子是公开的,您仍然需要 read_stream
才能获得对各种帖子的读取权限。
您可以在 Graph API Explorer 中轻松使用它。首先授予您的应用 read_stream
权限以获取您的提要中项目的 ID——这将为您提供“表单应用范围的用户 ID 下划线帖子 ID”的 ID。然后删除 read_stream
(通过再次单击“Get Access Token”并使用“Clear”按钮),并尝试几个 user_*
权限——您将看到你的大部分帖子,即使是公开的帖子,你仍然只会得到“不受支持的获取请求”,这只是意味着你不被允许阅读该对象。
F.e.,我有一个公开帖子,其中在我的时间轴上分享了来自另一个页面的视频帖子,type
是 video
并且 status_type
是shared_story
,但是 user_status
和 user_videos
都不允许我阅读这篇文章——只有当我再次授予 read_stream
时,我的应用程序可以阅读该帖子。与另一篇类型为 status
和 status_type mobile_status_update
的公开帖子相同——可以使用 read_stream
读取,而不可以使用任何 user_*
权限。
简而言之:使用 API v2 和 read_stream
将仅授予不存在官方 FB 客户端的平台上的应用的限制不再可能实现您想要实现的目标。
关于Facebook 图形 API : Find graph object from post URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28337331/