本指南说明如何使用授权窗口获取来自 Instagram 用户的短期Instagram 用户访问口令和权限。
应用用户可通过授权窗口向您的应用授予权限和短期Instagram 用户访问口令。用户登录并选择允许应用访问的数据后,我们会将用户重定向回您的应用,并附上授权码,然后您可以用该授权码交换短期访问口令。
要开始该过程,请获取授权窗口并将其显示给用户:
https://api.instagram.com/oauth/authorize ?client_id={instagram-app-id} &redirect_uri={redirect-uri} &scope={scope} &response_type=code &state={state} //Optional
除 state
外的所有参数均为必需项。
参数 | 示例值 | 说明 |
---|---|---|
|
| 显示在应用面板 > 产品 > Instagram > 基本显示中的 Instagram 应用编号。 |
|
| 用户允许或拒绝权限请求后将用户重定向到的 URI。请确保此 URI 与有效 oAuth URI 列表中的某个基本 URI 完全匹配。请记住,应用面板可能向您的 URI 添加了一个尾部斜杠,因此我们建议您检查列表以进行确认。 |
|
| 将此值设置为 |
|
| 要向应用用户请求的权限的列表,列表以逗号分隔,或者以空格分隔且以网址编码。 |
|
| 表明服务器特定状态的可选值。例如,您可以用其防范 CSRF 问题。我们会在再次向您重定向用户时添加此参数和值。 |
https://api.instagram.com/oauth/authorize ?client_id=990602627938098 &redirect_uri=https://socialsizzle.herokuapp.com/auth/ &scope=user_profile,user_media &response_type=code
如果授权成功,我们会将用户重定向至您的 redirect_uri
并通过 code
查询字符串参数向您传递授权码。请捕获该代码,以便应用将其用于交换用户访问口令。
授权码为一次性代码,有效时间为 1 小时。
https://socialsizzle.herokuapp.com/auth/?code=AQBx-hBsH3...#_
请注意,我们会向重定向 URI 末端附加 #_
,但它并不是代码本身的一部分,因此请去除该符号。
如果用户取消授权流程,我们会将该用户重定向到您的 redirect_uri
,并附上以下错误参数。在这种情况下,您有责任妥善告知授权失败,并向用户显示相应消息。
参数 | 值 |
---|---|
|
|
|
|
|
|
https://socialsizzle.herokuapp.com/auth/?error=access_denied &error_reason=user_denied &error_description=The+user+denied+your+request
收到代码后,通过向以下端点发送 POST
请求,以便将其交换为短期访问口令:
POST https://api.instagram.com/oauth/access_token
在 POST 请求正文中添加以下参数。
参数 | 示例值 | 说明 |
---|---|---|
|
| 显示在应用面板 > 产品 > Instagram > 基本显示中的 Instagram 应用编号。 |
|
| 显示在应用面板 > 产品 > Instagram > 基本显示中的 Instagram 应用密钥。 |
|
| 将用户重定向至您的 |
|
| 将此值设置为 |
|
| 将用户定向至授权窗口时,您向我们传送的重定向 URI。必须是同一个 URI,否则我们将拒绝请求。 |
curl -X POST \ https://api.instagram.com/oauth/access_token \ -F client_id=990602627938098 \ -F client_secret=eb8c7... \ -F grant_type=authorization_code \ -F redirect_uri=https://socialsizzle.herokuapp.com/auth/ \ -F code=AQBx-hBsH3...
成功后,API 将返回一个 JSON 负载,其中包含应用用户的短期访问口令和用户 ID。
{ "access_token": "IGQVJ...", "user_id": 17841405793187218 }
请捕获 access_token
值。这是用户的短期 Instagram 用户访问口令,您的应用可以用其访问 Instagram 基本显示 API 端点。
如果请求存在某种格式错误,API 将返回错误。
{ "error_type": "OAuthException", "code": 400, "error_message": "Matching code was not found or was already used" }