在2012年被Facebook高调收购后,Instagram采用了两套API供第三方使用。它们是Instagram Graph API和Instagram Basic Display API。
作为一个建立需要用户授权的Instagram账户信息的应用程序的开发者,你对这两个API的选择取决于你想要的用户信息的范围。
如果你只想得到用户的基本资料信息或他们账户上的媒体(照片、视频和相册)的集合,那么基本显示API就足够了。
然而,如果你想获得更复杂的社交媒体互动数据、指标和关于Instagram企业和创造者账户的洞察力,那么你将需要Instagram Graph API。
在本教程中,我将向你概括介绍这两套API能做什么,以及如何开始使用。
在你开始之前
要使用Instagram API,你需要首先在你的Facebook开发者账户的应用仪表板上创建并配置一个OAuth应用。在这个过程中,你会得到一个API访问令牌,你会在每次请求API时使用它。
请记住,有两个不同的指南来进行设置:
- 如果你想允许你的应用程序调用Instagram Graph API,请遵循这个指南。
- 如果你想获得读取Instagram账户的基本资料信息的权限(又称Instagram基本显示API),请遵循本指南。
你还应该注意,你使用某些API的能力可能取决于你在应用仪表板中为每个令牌设置的权限。出于这个原因,我建议你先阅读这篇文章,看看哪项任务需要哪些权限。
使用你的应用程序的访问令牌,你可以用你选择的任何HTTP客户端查询API。
基本显示API
通过Instagram基本显示API,你可以告诉你的应用程序的用户授予你在他们的Instagram账户上获得基本的个人资料信息、照片和视频的权限。该API是为非商业和非创造者的Instagram用户创建的。
用户端点
用户端点允许你根据Instagram用户的ID来查询他们的基本信息。要使用这个API,你的请求必须包括一个Instagram用户访问令牌,并且必须在你的Instagram OAuth应用程序上启用以下权限。
instagram_graph_user_profile
instagram_graph_user_media
(只有当你想在响应对象中包含用户的media_count
,这才是必需的)
这个端点的请求语法如下:
GET https://graph.instagram.com/{api-version}/{user-id}
?fields={fields}
&access_token={access-token}
api-version
(可选)。API版本,例如:v14.0(在文档中了解更多关于版本的信息)。该值必须是一个字符串。user-id
(必填)。你想获得信息的用户的ID。该值必须是一个字符串。fields
(可选)。一个以逗号分隔的列表,列出你希望由API返回的字段和边框。如果省略,默认字段将被返回。access_token
(必填)。你的API访问令牌。该值必须是一个字符串。
请注意,这个端点支持的字段是account_type
,id
,media_count
, 和username
。下面的图片描述了这些字段各自的返回内容:
用户字段
例如,这里有一个cURL请求的例子:
curl -X GET \
'https://graph.instagram.com/v14.0/10218560180051171?fields=id,username,media_count,account_type&access_token=IGQVJ...'
这里是响应的样本:
{
"id": "17841405793187218",
"username": "ubahthebuilder",
"media_count": 12,
"account_type": "PERSONAL",
}
Me端点
Me端点是一个捷径端点,它允许授予令牌的Instagram用户直接访问他们自己的账户。该API通过首先检查请求中包含的Instagram用户访问令牌来确定授予令牌的Instagram用户的ID,然后使用该ID来查询用户端点。
下面是请求的语法:
GET https://graph.instagram.com/v14.0/me
?fields={fields}
&access_token={access-token}
它支持与用户端点相同的字段:
用户字段
在引擎盖下,/me
被映射到/{user-id}
,访问令牌识别的用户ID将被用来完成查询。
总之,这个端点需要与User端点相同的范围,支持相同的字段,并从API返回类似的响应对象。
媒体端点
通过媒体端点,你可以通过其媒体ID检索Instagram照片、视频或相册的信息。
下面是请求语法:
GET https://graph.instagram.com/{media-id}
?fields={fields}
&access_token={access-token}
这个端点支持的字段是caption
,id
,media_type
,media_url
,username
,timestamp
,permalink
, 和thumbnail_url
。下面的图片描述了这些字段各自的返回内容:
媒体字段
请注意,这个端点只需要instagram_graph_user_media
的权限,并通过其媒体ID返回一个单一的对象。
例如,这里是一个cURL请求的样本:
curl -X GET \
'https://graph.instagram.com/13445686989093505?fields=id,media_type,media_url,username,timestamp&access_token=IGQVJ...'
这里是一个响应样本:
{
"id": "13445686989093505",
"media_type": "IMAGE",
"media_url": "https://fb-s-b-a.akamaihd.net/...",
"username": "ubahthebuilder"
"timestamp": "2022-07-20T18:10:00+0000"
}
边缘端点
边缘允许你获得关于Instagram用户或媒体的额外信息。你可以通过路径参数或使用fields
查询字符串参数来请求一个边缘。
以下是使用路径参数的语法:
// Request an edge on User endpoint
GET https://graph.instagram.com/{user-id}/{edge}
?fields={fields}
&access_token={access-token}
OR:
// Request an edge on Media endpoint
GET https://graph.instagram.com/{media-id}/{edge}
?fields={fields}
&access_token={access-token}
用户和媒体端点都支持一个边缘。
用户媒体边缘
除了基本的资料信息外,你还可以通过用户媒体边缘端点获得一个用户的媒体集合。然而,有一些限制,你应该牢记:
- 该端点不支持故事。
- 它也不支持推广帖子中使用的媒体。
- 该API最多返回10K的最近创建的媒体。
这个端点的一般语法如下:
GET https://graph.instagram.com/{api-version}/{user-id}/media
?fields={fields}&access_token={access-token}
除了fields
和access_token
,这个端点还接受以下查询字符串参数:
查询字符串参数
有了这组信息,你就可以在你的应用程序中找到在特定时间范围内发布的媒体了。
这个端点支持的字段是caption
,id
,media_type
,media_url
,username
,timestamp
,permalink
, 和thumbnail_url
。下面的图片描述了这些字段各自的返回内容:
媒体字段
下面是一个cURL请求的例子:
curl -X GET \
'https://graph.instagram.com/v14.0/13445686989093505/media?fields=id,media_type,media_url,username,timestamp&access_token=IGQVJ...'
这里是响应的样本:
"data": [
{
"id": "13445686989093505",
"media_type": "IMAGE",
"media_url": "https://fb-s-b-a.akamaihd.net/...",
"username": "ubahthebuilder"
"timestamp": "2022-07-20T18:10:00+0000"
},
// other media items on the user account
],
"paging": {
"cursors": {
"after": "MTAxN...",
"before": "NDMyN..."
},
"next": "https://graph.faceb..."
}
}
媒体儿童边缘
媒体儿童边缘端点允许你检索相册中的图像和视频媒体集合。
这里是请求的语法:
GET https://graph.instagram.com/{media-id}/children
?access_token={access-token}
媒体ID代表你想检索其子女的相册。这个端点使用与媒体端点相同的OAuth范围,并使用相同的字段。这些字段在下面的图片中描述。
媒体字段
下面是一个cURL请求的例子:
curl -X GET \
'https://graph.instagram.com/17896450804038745/children?access_token=IGQVJ...'
下面是一个响应示例:
"data": [
{
"id": "13445686989093505",
"media_type": "IMAGE",
"media_url": "https://fb-s-b-a.akamaihd.net/...",
"username": "ubahthebuilder"
"timestamp": "2022-07-20T18:10:00+0000"
},
// other media items on the user account
],
"paging": {
"cursors": {
"after": "MTAxN...",
"before": "NDMyN..."
},
"next": "https://graph.faceb..."
}
}
Instagram Graph API
通过Instagram Graph API,你可以告诉你的应用程序的用户授予你访问他们的Instagram Business和Creator账户中的数据的许可。这包括获取和发布他们的媒体,管理和回复他们媒体上的评论,识别他们被其他Instagram用户@过的媒体,查找有标签的媒体,以及获取基本的元数据和指标。
IG用户
IG用户端点允许您查询有关Instagram商业账户或Instagram创造者账户用户的详细信息。
要使用IG用户API,你需要在请求中包含一个Instagram用户访问令牌,并在你的Instagram OAuth应用程序上启用以下OAuth作用域:
- instagram_basic
- pages_read_engagement
- pages_show_list
- ads_management或business_management(如果应用程序用户通过业务管理器被授予页面上的角色)
- catalog_management(如果你打算为产品标签申请
shopping_product_tag_eligibility
领域) - instagram_shopping_tag_products(与上述相同)
该API还要求你打算检索信息的应用程序用户具备以下条件(注意:只有当你打算请求shopping_product_tag_eligibility
字段时才需要):
- 拥有IG用户的Instagram商店的业务经理的管理员角色
- 一个经过批准的Instagram商店,其产品目录包含产品
要求
这方面的一般语法如下:
GET https://graph.facebook.com/{api-version}/{ig-user-id}
?fields={fields}
&access_token={access-token}
api-version
(可选):API版本,例如:V14。该值必须是一个字符串。user-id
(必填):你想获取信息的用户的IG用户ID。该值必须是一个字符串。fields
(可选):你希望由API返回的字段和边缘的逗号分隔的列表。如果省略,默认字段将被返回。access_token
(必填):你的API访问令牌。该值必须是一个字符串。
这个端点支持的字段是biography
,id
,followers_count
,ig_id
,follows_count
,media_count
,name
,profile_picture_url
,shopping_product_tag_eligibility
,username
, 和website
。下面的图片描述了这些字段各自的返回内容。
IG用户字段
例如,这里是文档中的一个cURL请求样本:
curl -X GET \
'https://graph.facebook.com/v14.0/17841405822304914?fields=biography%2Cid%2Cusername%2Cwebsite&access_token=EAACwX...'
这里是响应的样本:
{
"biography": "Dino data crunching app",
"id": "17841405822304914",
"username": "metricsaurus",
"website": "https://www.metricsaurus.com/"
}
此外,IG用户端点支持各种边缘,允许应用程序获得有关企业或创造者账户的额外信息。这些边缘在下面的图片中有所描述。
要获得这些数据,你只需要把相应的边缘作为IG用户端点的附加路径参数。例如,下面的端点可以得到一个IG用户的媒体集合:
GET https://graph.facebook.com/{api-version}/{ig-user-id}/media
?fields={fields}
&access_token={access-token}
Instagram Graph API的其他端点
其余用于处理企业和创造者账户的API是:
- IG媒体。这允许你通过Instagram媒体ID检索有关Instagram照片、视频或相册的信息。
- IG Hashtag。这允许你检索有关一个给定的Instagram标签的信息。
- IG Hashtag搜索。这根边缘允许你获得Instagram标签的ID。
- IG容器。这允许你检索关于媒体容器的发布状态的信息。媒体容器是用来发布Instagram帖子的。
- IG评论。这允许您通过Instagram评论ID检索媒体的评论。从API返回的信息包括对评论的回复,喜欢数和评论文本。
请注意,这些API端点中的每一个都可能需要你的Instagram应用程序的不同OAuth范围权限,支持不同的字段和边缘组合,或者对其使用有某些限制。因此,请确保阅读完整的文档以了解情况。
Instagram API支持哪些平台?
你可以通过任何平台或编程语言使用其REST端点访问Instagram API。
大多数编程语言都有一个内置的HTTP客户端API或一个第三方库来进行API请求。例如axios(Node.js)、Net::HTTP(Ruby)、requests(Python)和guzzlehttp/guzzle(PHP)。
下一步是什么?
我希望你有兴趣开始使用Instagram的API。要开始使用,只需创建一个Facebook开发者账户,参考入门指南,了解如何检索你的API令牌,然后开始查询API!