【问题标题】:Get all Instagram posts using Facebook Oembed使用 Facebook Oembed 获取所有 Instagram 帖子
【发布时间】:2020-10-23 01:31:55
【问题描述】:

我已经按照https://developers.facebook.com/docs/plugins/oembed/ 此处的指南进行操作了。

我的问题是,如何动态获取我的帖子网址?所以我可以重复使用这个端点来处理我拥有的帖子数

https://graph.facebook.com/v8.0/instagram_oembed?url={postUrl}&access_token={access_token}

文档显示的方式是将 url 硬编码到端点 url 中,这似乎是多余的

【问题讨论】:

  • 不仅看起来多余,而且如果我必须知道所有帖子网址,我可以手动嵌入它们,这在那时是相同的。我也在寻找使用 oembed 来按用户或标签或其他东西获取帖子的东西

标签: facebook-graph-api instagram-api oembed


【解决方案1】:

目前无法使用基于文档(或网络上的其他任何地方)的 oEmbed API 获取 Instagram 个人资料的所有帖子 URL。您必须通过以下方式获取所有帖子简码(链接):

  1. https://www.instagram.com/{profile_handle}/?__a=1 发出GET 请求。现在有一个非常严格的速率限制,所以强烈建议第一次缓存结果,也许使用本地存储。
  2. 如果配置文件是公开的,结果将是一个包含所有配置文件信息的 JSON 对象。您可以通过检查[data].graphql.user.is_private 来检查请求配置文件是否公开
  3. 对于每个[data].graphql.user.edge_owner_to_timeline_media.edges.node,获取shortcode 属性。
  4. 最后,创建您的动态帖子 URI https://www.instagram.com/p/{shortcode}

或者,您可以向 `https://www.instagram.com/{profile_handle} 发出 GET 请求,并使用正则表达式在 HTML 响应中获取包含配置文件数据的类似 JSON 对象,如下所示:

const uri = `https://www.instagram.com/${handle}/`;
const instaRes = await axios.get(uri);
const html = instaRes.data;
const regex = /_sharedData = (.*);<\/script>/m;
const json = JSON.parse(regex.exec(html)[1]);

这里的速率限制也很严格,所以一定要缓存。测试可能会很痛苦,因为当您达到速率限制时,您可能需要多次更改 IP 地址。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-18
    • 1970-01-01
    相关资源
    最近更新 更多