我已经按照https://developers.facebook.com/docs/plugins/oembed/的指南进行操作了。
我的问题是,如何动态获取我的帖子网址?所以我可以重复使用此端点作为我的帖子数量
https://graph.facebook.com/v8.0/instagram_oembed?url={postUrl}&access_token={access_token}
文档显示的方法是将URL硬编码到端点url中,这似乎是多余的
答案 0 :(得分:0)
目前无法根据文档(或网络上的任何其他地方)使用 oEmbed API 获取 Instagram 个人资料的所有帖子 URL。您必须通过以下方式获取所有帖子短代码(链接):
https://www.instagram.com/{profile_handle}/?__a=1
发出 GET 请求。这些天有一个非常严格的速率限制,因此强烈建议第一次缓存结果,可能使用本地存储。[data].graphql.user.is_private
[data].graphql.user.edge_owner_to_timeline_media.edges.node
,获取 shortcode
属性。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 地址。