instagram授权流程(第一篇)

本篇介绍应用注册、授权官方文档,下一篇是demo演示

写在前面的话

你会惊奇地发现,整个授权的过程,竟然不需要集成sdk,甚至说,都几乎不用写代码,这与微信、新浪、QQ授权完全不同

注册账号

首先注册并登录你的Instagram账户

注册账户

注册你的应用

Instagram开发者官方文档

  1. 点击 右上角绿色按钮 Register a New Client

如果你还没注册你的app,那么下面红框内容是空的,我这里是已经注册了两个app了

  1. 新建一个应用

输入相关内容,值得注意的是 Valid redirect URI redirect URIs


3. 点击上图Register按钮

  1. 点击MANAGE按钮

  1. 点击 Security 选项卡

先把这个对勾去掉,
授权分两种模式,一种是服务端授权(推荐,安全),一种是客户端授权(不需要服务端,app前端就可拿到授权token,但是不安全,不推荐)

我们在这里先演示客户单授权的demo,所以这个对勾必须取消,勾上的话,客户端授权模式就不生效了,到时候会报错

上图中取消勾选候,点击页面下方的Update Client 按钮,让修改生效

  1. 点击 Sandbox 选项卡

  1. 点击 Permission 选项卡

到这里,你的应用申请完毕,要特别注意,上文里,提到的关键部分,不注意的话都是坑,关键之处再次提示一下

  • Valid redirect URIs:
  • Disable implicit OAuth:
  • Sandbox Mode

阅读授权流程文档

请仔细阅读此官方文档

任何文章,都比不上官方文档,英文也得读

建议至少大概过一遍阅读此文档,实在不想看,可直接看下一篇(demo演示)

授权

Instagram API使用OAuth 2.0协议进行简单但有效的身份验证和授权。
OAuth 2.0比以前的方案更容易使用,开发人员几乎可以立即开始使用Instagram API。
要记住的一件事是,所有对API的请求都必须通过SSL(https://而不是http://)进行。

你需要验证吗?

Instagram API需要身份验证 - 特别是代表用户发出的请求。
经过身份验证的请求需要access_token。
这些令牌对用户来说是唯一的,应该安全存储。
访问令牌可能在将来的任何时间到期。

接收access_token

要接收access_token,您必须执行以下操作:

将用户引导至我们的授权网址。

  • 如果用户未登录,则会要求他们登录。
  • 将询问用户是否要授予您的应用程序访问其Instagram数据的权限。

你有两种方式获得用户授权:

服务器端流程(推荐):将用户重定向到您选择的URI。
获取提供的代码参数,并通过将代码POST到access_token url来交换access_token。

隐式流(不推荐):我们不是处理代码,而是将access_token包含在URL中作为片段(#)。
此方法不太安全,但允许没有任何服务器组件的应用程序接收access_token。

即使我们的访问令牌没有指定过期时间,您的应用程序也应该处理用户撤销访问权限或Instagram在一段时间后使令牌过期的情况。
如果令牌不再有效,则API响应将包含“error_type = OAuthAccessTokenException”。
在这种情况下,您需要重新验证用户以获取新的有效令牌。

换句话说:不要假设您的access_token永远有效。

** 服务器端(显式)流程 **

使用服务器端流程非常简单。
只需按以下步骤操作:

第一步:将用户引导至我们的授权网址

https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=code

这个网址不要照抄呀,注意其中的大写字母部分CLIENT-ID,REDIRECT-URI要换成你当时申请的应用的相关字段

注意:您可以提供可选的范围参数,以请求“基本”权限范围之外的其他权限。
详细了解范围。

注意:您可以提供可选的状态参数以执行特定于服务器的状态。
例如,您可以使用它来防止CSRF问题。

此时,我们向用户显示一个登录屏幕,然后是一个确认屏幕,用于授予您的应用访问其Instagram数据的权限。

第二步:从Instagram接收重定向

用户授权您的应用程序后,我们会向您的redirect_uri发出重定向,并在第3步中使用代码参数。

HTTP://您的重定向的URI码= CODE

请注意,重定向URI的主机和路径组件必须与您注册的redirect_uri完全匹配(包括尾部斜杠)。
如果需要动态改变行为,还可以在提供的redirect_uri中包含其他查询参数。
例子:

那个表格就是告诉你,你注册时的uri,跟你使用的uri一定要一直,如果要附带参数,要按照下表格式来

如果用户拒绝您的批准请求,我们将使用以下参数将用户重定向到您的redirect_uri:

  • error:access_denied
  • error_reason:user_denied
  • error_description:用户拒绝了您的请求

在这种情况下,您有责任优雅地失败并向您的用户显示相应的错误消息。

第三步:请求access_token

现在,您需要将上一步中收到的代码交换为访问令牌。
为了进行此交换,您只需将此代码以及一些应用程序标识参数POST到我们的access_token端点。
这些是必需的参数:

  • client_id:您的客户端ID
  • client_secret:你的客户秘密
  • grant_type:authorization_code是当前唯一支持的值
  • redirect_uri:您在授权请求中使用的redirect_uri。(注意:这必须与授权请求中的值相同。)
  • 代码:您在授权步骤中收到的确切代码。

如果成功,此调用将返回一个整齐打包的OAuth令牌,您可以使用该令牌对API进行经过身份验证的调用。
我们还包括刚刚为您方便验证的用户

客户端(隐式)身份验证

如果您正在构建一个没有服务器组件的应用程序(例如纯粹的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。
它看起来像这样:

只需从URL片段中获取access_token,就可以了。
如果用户选择不授权您的应用程序,您将收到与显式流程中相同的错误响应

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值