instagram目前好像在国内还不是用的很广泛。
其获取instagram的数据有两种方式:
-
获取公共热点图片不需要用户认证,只需要将你申请的client_id发送到instagram即可。
-
获取用户相关数据,需要通过instagram认证之后所颁发的access_token.
在第二种方式下,如何获取access_token呢?
首先注册开发者账号instagram Api开发者官网获取CLIENT ID
1.第一步:将用户引导至我们的授权网址。跳转到ins的网站
https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=code
注意:您可以提供可选的范围参数,以请求“基本”权限范围之外的其他权限。详细了解范围。
注意:您可以提供可选的状态参数以执行特定于服务器的状态。例如,您可以使用它来防止CSRF问题。
此时,我们向用户显示一个登录屏幕,然后是一个确认屏幕,用于授予您的应用访问其Instagram数据的权限
2.第二步:从Instagram接收重定向
用户授权您的应用程序后,我们会向您的redirect_uri发出重定向,并在第3步中使用代码参数。
http://your-redirect-uri?code=CODE
请注意,重定向URI的主机和路径组件必须与您注册的redirect_uri完全匹配(包括尾部斜杠)。如果需要动态改变行为,还可以在提供的redirect_uri中包含其他查询参数。例子:
已注册的重定向URI REDIRECT_URI参数传递给/ AUTHORIZE 有效?
http://yourcallback.com/ http://yourcallback.com/ 是
http://yourcallback.com/ http://yourcallback.com/?this=that 是
http://yourcallback.com/?this=that http://yourcallback.com/ 没有
http://yourcallback.com/?this=that http://yourcallback.com/?this=that&another=true 是
http://yourcallback.com/?this=that http://yourcallback.com/?another=true&this=that 没有
http://yourcallback.com/callback http://yourcallback.com/ 没有
http://yourcallback.com/callback http://yourcallback.com/callback?type=mobile 是
如果用户拒绝您的批准请求,我们将使用以下参数将用户重定向到您的redirect_uri:
错误:access_denied
error_reason:user_denied
error_description:用户拒绝了您的请求
http://your-redirect-uri?error=access_denied&error_reason=
user_denied&error_description=The+user+denied+your+request
在这种情况下,您有责任优雅地失败并向您的用户显示相应的错误消息
第三步:请求access_token
现在,您需要将上一步中收到的代码交换为访问令牌。为了进行此交换,您只需将此代码以及一些应用程序标识参数POST到我们的access_token端点。这些是必需的参数:
client_id:您的客户端ID
client_secret:你的客户秘密
grant_type:authorization_code是当前唯一支持的值
redirect_uri:您在授权请求中使用的redirect_uri。注意:这必须与授权请求中的值相同。
代码:您在授权步骤中收到的确切代码。
这是一个示例请求:
curl -F 'client_id=CLIENT_ID' \
-F 'client_secret=CLIENT_SECRET' \
-F 'grant_type=authorization_code' \
-F 'redirect_uri=AUTHORIZATION_REDIRECT_URI' \
-F 'code=CODE' \
https://api.instagram.com/oauth/access_token
如果成功,此调用将返回一个整齐打包的OAuth令牌,您可以使用该令牌对API进行经过身份验证的调用。我们还包括刚刚为您方便验证的用户:
{
"access_token": "fb2e77d.47a0479900504cb3ab4a1f626d174d2d",
"user": {
"id": "1574083",
"username": "snoopdogg",
"full_name": "Snoop Dogg",
"profile_picture": "..."
}
}
客户端(隐式)身份验证
如果您正在构建一个没有服务器组件的应用程序(例如纯粹的javascript应用程序),您会注意到无法完成上述第三步以接收您的access_token而无需将密钥存储在客户端上。您永远不应将client_id密钥传递或存储到客户端。对于这些情况,存在隐式认证流程。
第一步:将用户引导至我们的授权网址
https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=token
此时,我们向用户显示一个登录屏幕,然后是一个确认屏幕,在该屏幕上,他们授予您应用访问其Instagram数据的权限。请注意,与显式流不同,此处的响应类型为“token”。
第二步:通过URL片段接收access_token
一旦用户通过身份验证然后授权您的应用程序,Instagram就会使用url片段中的access_token将它们重定向到您的redirect_uri。它看起来像这样:
http://your-redirect-uri#access_token=ACCESS-TOKEN
只需从URL片段中获取access_token,就可以了。如果用户选择不授权您的应用程序,您将收到与显式流程中相同的错误响应