如何通过Instagram API获取其他用户的媒体内容
如何用自身Access Token获取其他用户的Instagram媒体内容
首先,你遇到的问题核心有两个:端点参数错误和API权限/规则限制,咱们一步步拆解:
1. 老v1 API的问题(你当前使用的版本)
你直接把self换成用户名是行不通的,因为v1 API的/users/{user-id}/media/recent/端点要求传入的是用户ID,不是用户名。另外,这个API版本已经被Instagram官方废弃,不再维护,即便参数调整正确,也大概率无法正常返回数据。
如果非要尝试老API的话,得先通过用户名获取目标用户的ID,用这个端点:
$url = 'https://api.instagram.com/v1/users/search?q=' . $username . '&access_token=' . $token;
拿到用户ID后,再替换到媒体获取的端点里:
$url = 'https://api.instagram.com/v1/users/' . $user_id . '/media/recent/?access_token=' . $token;
但要注意两个硬限制:
- 只有目标账号是公开账号才可能返回数据
- 你的Access Token需要拥有
public_content权限,这个权限现在需要向Instagram申请审核,个人开发者很难获批
2. 推荐使用Instagram Graph API(当前官方支持的版本)
现在Instagram官方只维护Graph API,步骤更规范,稳定性也更高:
前提条件
- 你的Access Token需要有
instagram_basic权限 - 目标账号是公开账号,或者你已经获得了私有账号用户的授权(即用户通过你的应用登录并允许你访问他们的内容)
获取其他用户媒体的具体步骤
- 先通过用户名获取目标用户的IG用户ID:
$url = 'https://graph.facebook.com/v18.0/ig_user_search?username=' . $username . '&access_token=' . $token;
- 用拿到的IG用户ID获取最近媒体内容(可按需添加更多字段):
$url = 'https://graph.facebook.com/v18.0/' . $ig_user_id . '/media?fields=id,caption,media_url&access_token=' . $token;
关键规则提醒
- 私有账号的媒体:除非用户主动授权你的应用,否则无论用什么方法都无法获取
- 权限审核:所有涉及用户数据的权限都需要向Meta(原Facebook)申请审核,没有合规的应用场景,个人开发者很难通过
- 速率限制:API调用有频次上限,频繁请求会被临时限流
内容的提问来源于stack exchange,提问作者piyush marothi




