Instagram 完成 OAuth2.0 流程

1,047 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第28天,点击查看活动详情

OAuth2.0 对接流程,有 4 种访问模式:

  • 授权码模式 Authorization Code 适用于后端使用
  • 简化模式 implict 适用前端调用
  • 密码模式 resource owner password credentials
  • 客户端模式 Clinet credentials

这里主要讲述使用 OAuth2.0 的授权码模式实现以 Instagram 为身份源进行授权认证后进入到第三方应用。

OAuth2.0 对接流程:

img_aaec3b507948a6beb45c234df8f43852.png

对接步骤:

  1. 首先要对 ins 服务发起一个 oauth 的客户端请求对象,并携带客户端信息请求。
  2. ins 服务首先验证是否已登录,若已登录则请求用户进行授权。若还没有登录,就需要进行先登录然后请求用户进行授权
  3. 用户确认授权认证登录后,将回调到客户端服务,并携带 code
  4. 客户端接受到请求,获取到 code ,并通过使用 code 请求 ins 服务换取 token
  5. ins 返回 token 和 userId ,客户端通过 token 和 userId 换取 详细用户信息
  6. 这样就可以认证成功,然后进行身份关联,免密登录到第三方应用内

相关接口

  • OAuth 授权
GET https://api.instagram.com/oauth/authorize
  ?client_id={app-id},
  &redirect_uri={redirect-uri},
  &response_type=code,
  &scope={scope}
  • 获取Token
POST https://api.instagram.com/oauth/access_token
  • 刷新 token
GET https://graph.instagram.com/refresh_access_token
  ?grant_type=ig_refresh_token
  &access_token={long-lived-access-token}
  • 获取用户
GET https://graph.instagram.com/v13.0/me
  ?fields={fields}
  &access_token={access-token}

遇到问题

在对接的过程中,也遇到了几个问题:

  • 问题1 : 报错 Insufficient developer role

这是因未上线的应用缺少测试用户,所以需要在 facebook 添加一个测试用户,再在当前应用下 用户身份> 用户身份 添加 Instagram 身份。添加完之后。Instagram 用户可以在个人主页的应用和网站版块中管理测试者邀请。

  • 问题2: 报错 Invalid scope []

进行认证时需要携带 scope 资源,这样 ins 才能鉴定权限。若要使用 Instagram 开放平台,你的应用需要获得访问 instagram_graph_user_profileinstagram_graph_user_media 的权限。所以需要在配置中提交这2个的申请,然后就可以使用 scope=user_profile,user_media

参考资料