Instagram API能做什么以及如何开始使用

2,573 阅读9分钟

在2012年被Facebook高调收购后,Instagram采用了两套API供第三方使用。它们是Instagram Graph APIInstagram 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 。下面的图片描述了这些字段各自的返回内容:

User_fields_imagesUser_fields_imagesUser_fields_images

用户字段

例如,这里有一个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}

它支持与用户端点相同的字段:

User_fields_image 用户字段

在引擎盖下,/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 。下面的图片描述了这些字段各自的返回内容:

Media fields

媒体字段

请注意,这个端点只需要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}

除了fieldsaccess_token ,这个端点还接受以下查询字符串参数:

Query string parameters 查询字符串参数

有了这组信息,你就可以在你的应用程序中找到在特定时间范围内发布的媒体了。

这个端点支持的字段是caption,id,media_type,media_url,username,timestamp,permalink, 和thumbnail_url 。下面的图片描述了这些字段各自的返回内容:

Media fields 媒体字段

下面是一个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范围,并使用相同的字段。这些字段在下面的图片中描述。

Media fields

媒体字段

下面是一个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商店,其产品目录包含产品

Requirements

要求

这方面的一般语法如下:

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 User fields 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 User Edges

要获得这些数据,你只需要把相应的边缘作为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!