一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第28天,点击查看活动详情。
OAuth2.0 对接流程,有 4 种访问模式:
- 授权码模式 Authorization Code 适用于后端使用
- 简化模式 implict 适用前端调用
- 密码模式 resource owner password credentials
- 客户端模式 Clinet credentials
这里主要讲述使用 OAuth2.0 的授权码模式实现以 Instagram 为身份源进行授权认证后进入到第三方应用。
OAuth2.0 对接流程:
对接步骤:
- 首先要对 ins 服务发起一个 oauth 的客户端请求对象,并携带客户端信息请求。
- ins 服务首先验证是否已登录,若已登录则请求用户进行授权。若还没有登录,就需要进行先登录然后请求用户进行授权
- 用户确认授权认证登录后,将回调到客户端服务,并携带 code
- 客户端接受到请求,获取到 code ,并通过使用 code 请求 ins 服务换取 token
- ins 返回 token 和 userId ,客户端通过 token 和 userId 换取 详细用户信息
- 这样就可以认证成功,然后进行身份关联,免密登录到第三方应用内
相关接口
- 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_profile 和 instagram_graph_user_media 的权限。所以需要在配置中提交这2个的申请,然后就可以使用 scope=user_profile,user_media
参考资料