我正在尝试使用 Facebook Graph API 为 Instagram 企业帖子发出 API 请求。
https://developers.facebook.com/docs/instagram-api/business-discovery
使用我正在调用的 Facebook Graph API Explorer
<my_facebook_page_id>?fields=business_discovery.username(<instagram_business_account_username>){media{comments_count,like_count, caption, media_url, media_type,timestamp}}
这成功返回了 Instagram 企业帐户的 25 个最新帖子以及 json 的分页 > 光标部分中的“after”字段。
但是,我现在尝试使用某种形式的分页来获取接下来的 25 个帖子。
我读到 Facebook Graph API 支持游标和基于时间的分页,但以下文章表明 Business Discovery 的 /media 端点仅支持基于游标的分页。
https://developers.facebook.com/docs/instagram-api/reference/user/business_discovery#pagination
我尝试了上述查询的几种变体,试图获取接下来的 25 个帖子,但它们都返回最近的 25 个帖子(与上面的初始查询相同)。
以下是我尝试过的一些查询示例。
<my_facebook_page_id>?fields=business_discovery.username(<instagram_business_account_username>){media{comments_count,like_count, caption, media_url, media_type,timestamp}}&after=<after_code_from_first_call>
<my_facebook_page_id>?fields=business_discovery.username(<instagram_business_account_username>).after(<after_code_from_first_call>){media{comments_count,like_count, caption, media_url, media_type,timestamp}}
因此,如果您能提供有关如何格式化这些查询字符串以便对 Instagram 媒体对象执行分页(使用 after/before 参数、时间戳或 post_ids)的任何帮助,我们将非常感激。
谢谢。
经过多次尝试错误,我发现API请求的正确格式应该如下
https://graph.facebook.com/v3.0/<my-facebook-page-id>?access_token=<access-token>&fields=business_discovery.username(<accountHandle>){{profile_picture_url,media.after(<pagination-code>).limit(<the-amount-of-posts-to-return>){{id,caption,media_url,media_type,like_count,comments_count,timestamp,permalink}}}}
我还发现可以返回的帖子数量没有限制(我测试时一次返回了1000个)
注意:“分页代码”是您执行 API 调用时提供的“之后”代码。
我已经尝试了接受的答案的解决方案,但它不起作用(可能是因为图形版本) 这是 v17.0 上的工作 API 请求
https://graph.facebook.com/v17.0/{ig-user-id}?access_token={access-token}&fields=id,business_discovery.username({username}){media.after({pagination-code}){id,comments_count,like_count}}
注意:它也适用于光标/时间/基于分页,请参阅支持的参数这里
我已于 2024 年 6 月 4 日测试了接受的答案(@Tom C),它仍然有效。它能够控制每个请求的帖子数量限制,如果您的帖子数量很大且速率限制较低,这会非常有用。顺便说一句,limit 和 after 的位置也可以更改:
https://graph.facebook.com/v3.0/<my-facebook-page-id>?access_token=<access-token>&fields=business_discovery.username(<accountHandle>){{profile_picture_url,media.limit(<the-amount-of-posts-to-return>)after(<pagination-code>).{{id,caption,media_url,media_type,like_count,comments_count,timestamp,permalink}}}}