On September 4, 2024, we announced the deprecation of the Instagram Basic Display API.
Starting December 4, 2024, all requests to the Instagram Basic Display API will return an error message. We recommend that you migrate your app to the Instagram API to avoid any disruption to your services.
本教程将向您介绍如何在应用面板中配置应用、获取短期Instagram 用户访问口令,然后使用该口令查询 Instagram 用户个人主页的 API。完成教程后,您将大致了解如何获取应用用户的访问口令和权限,以及如何使用该 API 执行基本查询。
本教程假设您可以使用命令行工具或 Postman 等应用执行基本 cURL 请求。
前往 developers.facebook.com,点击我的应用,然后创建新应用并选择消费者或无应用类型。
在应用面板中创建应用后,导航至设置 > 基本,滚动到页面底部,然后点击添加平台。
选择网站,添加您网站的网址,然后保存更改。您可按需在稍后改为其他平台,但对于此教程,请使用网站。
点击产品,找到 Instagram Basic Display 产品,然后点击设置,将其添加至您的应用。
滚动到页面底部,然后点击创建新应用。
在系统显示的表单中,使用以下指南完成每个部分。
输入您刚刚创建的 Facebook 应用的名称。
输入您网站的网址。一般情况下,这会是一个可以捕获重定向查询字符串参数的专用 URI,但对于此教程,输入您网站的网址即可。
例如:https://socialsizzle.heroku.com/auth/
输入网址后,请保存更改并再次检查网址;我们可能会根据您的网址结构,添加尾部正斜杠。由于您在后续步骤中需要使用该网址获取授权码和访问口令,请将完整网址复制到某处。
再次输入您网站的网址。最终,您会将此更改为能够处理取消授权通知的网址,但对于此教程,您可以重复使用您的网站网址。
再次输入您网站的网址。与取消授权回调网址一样,您最终会将此更改为能够处理数据删除请求的网址,但目前,您可以重复使用您的网站网址。
目前,由于您不会在教程学习期间将应用切换为上线模式,请跳过此部分。
导航至身份 > 身份,然后向下滚动至“Instagram 测试者”部分。点击添加 Instagram 测试者,然后输入您 Instagram 账户的账号并发送邀请。
打开新的网页浏览器,前往 www.instagram.com 并登录您刚刚邀请的 Instagram 账户。导航至(个人主页图标)> 编辑个人主页 > 应用和网站 > 测试者邀请,然后接受邀请。
现在,您的 Facebook 应用可以在处于开发模式时访问您的 Instagram 账户。
在下方构建授权窗口网址,使用您 Instagram 应用的编号(应用面板 > 产品 > Instagram > Basic Display > Instagram 应用编号栏)替换 {app-id}
,然后使用您在第 2 步(“有效的 OAuth 重定向 URI”)中提供的网站网址来替换 {redirect-uri}
。网址必须完全相同。
https://api.instagram.com/oauth/authorize ?client_id={app-id} &redirect_uri={redirect-uri} &scope=user_profile,user_media &response_type=code
例如:
https://api.instagram.com/oauth/authorize ?client_id=684477648739411 &redirect_uri=https://socialsizzle.herokuapp.com/auth/ &scope=user_profile,user_media &response_type=code
打开新的浏览器窗口,然后加载授权窗口网址。其中应该会显示您的 Instagram 用户的名称、应用名称以及对应用正在请求的权限的描述。
登录授权窗口验证您的 Instagram 测试用户,然后点击授权,向应用授予访问您个人主页数据的权限。成功后,该页面会将您重定向至您在上一步中添加的重定向 URI,并附上授权码。例如:
https://socialsizzle.herokuapp.com/auth/?code=AQDp3TtBQQ...#_
请注意,我们在重定向 URI 末端附加了 #_
,但它并不是授权码本身的一部分。复制此代码(无需复制 #_ portion
),以便在下一步中使用。
授权码是短期口令,有效期仅为 1 小时。
打开支持 cURL 请求的命令行工具或应用,然后向 API 发送以下 POST
请求。
curl -X POST \ https://api.instagram.com/oauth/access_token \ -F client_id={app-id} \ -F client_secret={app-secret} \ -F grant_type=authorization_code \ -F redirect_uri={redirect-uri} \ -F code={code}
使用您的 Instagram 应用编号、Instagram 应用密钥、重定向 URI,以及我们发送给您的授权码替换 {app-id}
、{app-secret}
、{redirect-uri}
和 {code}
。如果应用面板已在您配置 Instagram 应用时添加了重定向 URI,请确保其与您在上一步中指定的 URI 完全匹配(包括尾部正斜杠)。
例如:
curl -X POST \ https://api.instagram.com/oauth/access_token \ -F client_id=684477648739411 \ -F client_secret=eb8c7... \ -F grant_type=authorization_code \ -F redirect_uri=https://socialsizzle.herokuapp.com/auth/ \ -F code=AQDp3TtBQQ...
成功后,API 将返回 JSON 编码对象,其中包括短期的 Instagram 用户访问口令(1 小时内有效)以及您的 Instagram 测试用户编号:
{ "access_token": "IGQVJ...", "user_id": 17841405793187218 }
复制访问口令和用户编号,以便在下一步中使用。
使用命令行工具或应用,以及下方的 cURL 请求,查询您用户编号和帐号的用户节点。使用您在上一步中收到的编号和访问口令替换 {user-id}
和 {access-token}
。
curl -X GET \ 'https://graph.instagram.com/{user-id}?fields=id,username&access_token={access-token}'
例如:
curl -X GET \ 'https://graph.instagram.com/17841405793187218?fields=id,username&access_token=IGQVJ...'
或者,您可以查询将要检查您口令的 Me 节点,确定授予口令的 Instagram 用户编号并查询此用户。例如:
curl -X GET \ 'https://graph.instagram.com/me?fields=id,username&access_token=IGQVJ...'
成功后,API 将在响应中提供 Instagram 用户的编号和帐号:
{ "id": "17841405793187218", "username": "jayposiris" }
了解了如何获取口令和执行基本查询之后,请参阅我们的指南,详细了解您可以使用此 API 进行哪些操作。