授权

1. 授权流程

如果您熟悉通用OAuth授权流程,那么接下来对接授权流程会相对容易。如果您了解并不是很深刻,建议您先阅读 相关文献 ,这将有助于您接来下的对接过程顺利进行。下图描述了平台授权的整个流程:

../_images/openapi_oauth_flow1.png

具体流程如下:

  1. 用户访问第三方网站;
  2. 第三方应用服务器判断用户是否已经通过授权,如果已经授权通过,用户即可正常访问第三方应用,否则第三方需要通过浏览器访问HiCoin的`2.1 授权页面`_进行授权。
  3. 授权通过之后,HiCoin授权服务器会重定向到第三方网址,重定向地址为授权页面请求参数的redirect_uri。
  4. 上一步重定向的地址会带上参数,类似如: redirect_uri/?code=CODE&state=STATE, 其中CODE为授权的临时凭证。调用接口使用CODE换取accss_token和openid。
  5. 整个授权过程结束。

2. 授权相关接口

2.1 授权页面

说明:第三方静默授权页面,注意:此接口无需公共参数
页面地址:/api/connect/oauth/authorize [ 附录一 ]
请求参数:
参数名 数据类型 是否必须 说明
app_id string 第三方标识
redirect_uri string 授权后重定向的链接地址,请使用urlencode对链接进行处理
response_type string 授权类型,传固定值code
scope string 应用授权作用域,说见下方重点字段说明
state string 重定向后会带上state参数,开发者可以填写a-zA-Z0-9的参数值,最多128字节
wallet_redirect string 无论直接打开还是做页面302重定向时候,必须带此参数

重点字段说明:

  • scope: snsapi_base(不弹出授权页面,直接跳转,只能获取用户openid),snsapi_userinfo(弹出授权页面,可通过openid拿到昵称、性别、所在地。并且, 即使在未关注的情况下,只要用户授权,也能获取其信息 ),目前snsapi_userinfo暂不支持,排期开发中,敬请期待。
  • state: 重定向后会带上state参数,开发者可以填写a-zA-Z0-9的参数值,最多128字节
  • wallet_redirect:该参数值请设置为 #wallet_redirect。类似于这种形式:/api/connect/oauth/authorize?state=abc&#wallet_redirect

授权通过之后,授权服务器会重定向到第三方网址(redirect_uri),并且会在redirect_uri拼接code和state参数。

授权页面访问地址类似于: http://oauth.hicoin.one/api/connect/oauth/authorize?app_id=xx&redirect_uri=https%3a%2f%2fwww.xyz.com%3fa%3db%26c%3dd&response_type=code&scopesnsapi_base&state=xxx&#wallet_redirect

重定向的地址类似于: https://www.xyz.com?a=b&c=d&code=12343455335&state=xxx

2.2 授权code换取access_token与openid

说明:授权code换取token
接口地址:/sns/oauth/access_token
请求方式:POST
请求参数:
参数名 数据类型 是否必须 说明
app_id string 第三方标识
secret string 第三方key
code string 填写上面获取的code参数
grant_type string 填写固定值: authorization_code
响应参数:
参数名 数据类型 是否必须 说明
access_token string 授权access_token,网页授权接口调用凭证。 注意:此access_token与基础access_token不同
expires_in string access_token接口调用凭证超时时间,单位(秒)
refresh_token string 用户刷新access_token
openid string 平台用户的唯一标识
scope string 用户授权的作用域,使用逗号(,)分隔

2.3 刷新access_token

说明:access_token一段时间之后会过期,通过此接口可以获取新的access_token
接口地址:/sns/oauth/refresh_token
请求方式:POST
请求参数:
参数名 数据类型 是否必须 说明
app_id string 第三方标识
grant_type string 填写固定值:refresh_token
refresh_token string 填写通过access_token获取到的refresh_token参数
响应参数:
参数名 数据类型 是否必须 说明
access_token string 网页授权接口调用凭证, 注意:此access_token与基础支持的access_token不同
expires_in string access_token接口调用凭证超时时间,单位(秒)
refresh_token string 用户刷新access_token
openid string 用户唯一标识
scope string 用户授权的作用域,使用逗号(,)分隔

2.4 获取用户基本信息

说明:获取用户基本信息
接口地址:/sns/user/info
请求方式:GET
请求参数:
参数名 数据类型 是否必须 说明
app_id string 应用ID
access_token string 授权access_token
lang string i18n 语言,固定zh_CN
version string 接口版本固定1.0
charset string 固定utf8
openid string 用户唯一标识
响应参数:
参数名 数据类型 是否必须 说明
openid string 用户唯一标识
nickname string 用户昵称
mobile_number string 用户手机号
country_code string 手机号对应的国家编码
email string 邮箱
origin string 用户来源
role string 用户在经济人中的角色
parent_mobile_number string 邀请人手机号
parent_country_code string 邀请人手机号对应的国家编码
parent_email string 邀请人邮箱