易信开放平台

还没帐号?

客户端SDK OAuth接入新手指南

本文将介绍如何通过SDK进行Oauth2.0的授权。SDK的用法,请查阅 IOS SDK使用指南 Android SDK 使用指南

客户端Oauth授权流程:

1. 准备

请参考IOS SDK使用指南Android SDK 使用指南,完成SDK环境的配置。

提示:如果用户移动设备未安装易信客户端或易信客户端版本太低,易信OAuth SDK将会告诉你用户设备当前环境是否已安装并支持易信OAuth认证授权。如果支持,你只需要在易信客户端回传你获取到的code之后换取token即可;不支持的话,你可以尝试使用webview进行授权认证流程,参考web网页OAuth流程

2. 授权流程

1. 你的应用通过SDK API发起Oauth授权请求,打开易信。

以IOS为例,在将易信开放平台提交应用分配得到的AppID注册为URL Schemes,然后调用SDK的发起OAuth请求的API,切换到易信界面。

2. 用户登录易信

如果用户还未登录易信,需要先登录 登录授权页面

3. 用户点击授权按钮,授权第三方应用权限,或用户取消授权。

如果用户已经登录,会在授权界面看到你的应用介绍和需要获取的权限,由用户决定是否同意授权。用户同意或取消授权,易信客户端都将切换回你的APP应用界面。 授权页面

4. SDK将用户授权信息(Authorization Code)返回给你的应用

易信客户端在授权流程处理完毕后会切换回你的应用界面。你的应用通过SDK的onReceiveResponse将会获取到授权结果,解析之后能够拿到code,通过code换取token之后可以调用易信相关API

code不能重复使用,一旦使用code获取access_token后code即刻失效。如果重新请求code,之前获取的access_token也将失效,必须使用新的code重新获取。

3. 获取Access Token

接口地址

Post https://open.yixin.im/oauth/token

请求参数
参数字段 必选 说明
client_id yes 申请应用时分配的AppId
client_secret yes 申请应用时分配的Secret
grant_type yes 授权类型,当前该参数值设置为字符串"authorization_code"即可
code yes Authorization Code
返回结果

{ “access_token”: “1D45T7ofpx”, “refresh_token”: “723YU6x8qxp”, “expires_in”: 3600 }

返回字段说明
参数字段 类型 说明
access_token String access_token
refresh_token String refresh_token
expires_in int access_token 的过期时间,单位秒

4. 通过Refresh Token获取Access Token

接口地址

Post https://open.yixin.im/oauth/token

请求参数
参数字段 必选 说明
client_id yes 申请应用时分配的AppId
client_secret yes 申请应用时分配的Secret
grant_type yes 授权类型,当前该参数值设置为字符串"refresh_token"即可
refresh_token yes refresh token
返回结果

{ “access_token”: “1D45T7ofpx”, “refresh_token”: “723YU6x8qxp”, “expires_in”: 3600 }

返回字段说明
参数字段 类型 说明
access_token String access_token
refresh_token String refresh_token
expires_in int access_token 的过期时间,单位秒

异常

异常返回:{"error":"invalid_token","error_description":"Invalid access token: 9a4471bb-2c82-46c8-8dd7-4aaddaca6d37"}

异常 描述
invalid_request 参数不正确
invalid_client 客户端未找到
invalid_grant 使用code,或者refresh token换取token时,数据不正确
unsupported_grant_type 不支持的授权类型
invalid_scope 不支持的授权域
invalid_token 使用accessToken访问是,token不正确
redirect_uri_mismatch 获得code或者使用code换token时,重定向地址不匹配
unsupported_response_type 不支持的response_type
access_denied 拒绝访问