授权说明

一,授权方式

为保证用户数据的安全性,若您的应用已完成与锐鲨开放平台对接,需要获取一些与用户紧密相关的信息(如订单、商品、促销等),需要征得用户的同意,获得用户的授权许可。锐鲨开放平台采用国际通用的OAuth2.0标准协议,支持网站、桌面客户端、ERP系统(若要了解更多关于OAuth2.0的技术说明,请参考官方网站 http://oauth.net/2/ ) 。目前,锐鲨开放平台的OAuth2.0支持以下方式获取Access Token。

序号 方式 说明
 1 Server-side flow 此流程要求ISV应用有Web Server应用,能够保存应用本身的密钥以及状态,可以通过http直接访问锐鲨的授权服务器。
 2 Clinet-side Application 此流程适合客户端应用,同时应用无法与浏览器交互,但是可以外调用浏览器。
 3 Refreshing an Access Token 用户如果在获取访问令牌时,同时获取到了刷新令牌,当访问令牌过期时,用户可以用刷新令牌刷新,从而延长访问令牌的时间。

二,名词解释

1. redirect_uri及callback定义规则

redirect_uri指的是应用发起请求时,所传的回调地址参数,在用户授权后应用会跳转至redirect_uri。

callback指的是应用注册时填写的回调地址链接 或者网站接入时所验证的域名地址。

相关的规则是:

(1)对于Server-side flow,redirect_uri是必选参数,并且要求redirect_uri与callback的顶级域名一致。

(2)在不可预知错误的情况下,返回到默认错误页面。

3.Access Token

Access Token:用户授权后颁发的session key

三,Server-side flow

此流程要求ISV或商家(自主研发应用)有web服务器,能够保持应用本身的密钥以及状态,可以通过http直接访问锐鲨的授权服务器。

1.授权步骤:

(1)通过用户授权获取授权码Code; (获取授权码链接:)

通过拼接以下链接(注意替换以下app_key、redirect_uri和state)打开用户登录页面:https://oauth.realshark.com/authorize?response_type=code&app_key=YOUR_APPKEY&redirect_uri=YOUR_REGISTERED_REDIRECT_URI&state=YOUR_CUSTOM_CODE

(2)用上一步获取的Code和应用密钥(AppSecret)通过Http POST方式换取Token。(获取访问令牌: )

通过拼接以下链接(注意替换以下app_key、redirect_uri和state)打开用户登录页面:https://oauth.realshark.com/token?code=YOUR_AUTHCODE&grant_type=authorization_code&app_key=YOUR_APPKEY&app_secret=YOUR_APPSECRET&redirect_uri=YOUR_REGISTERED_REDIRECT_URI

2.流程说明

(1) 通过用户登录验证和授权,获取Authorization Code

请求方法:GET

请求参数:

参数 是否必选 参数说明
app_key 接入时申请的app_key
redirect_uri 回调地址,请确保回调地址在授权域下,并UrlEncode。
response_type 授权类型,此值固定为“code”。client_side flow 此值为token
state 用于第三方应用防止CSRF攻击,成功授权后回调时会原样带回。请务必严格按照流程检查用户与state参数状态的绑定。

返回说明:

如果用户成功登录并授权,则会跳转到指定的回调地址,并在redirect_uri地址后带上Authorization Code和原始的state值。

注意:code会在10分钟内过期。

(2) 通过Authorization Code获取Access Token

请求方法:GET

请求参数:

参数 是否必选 参数说明
app_key 接入时申请的app_key
app_secret 接入时申请的app_secret
redirect_uri 回调地址,与上一步的redirect_uri保持一致
grant_type 授权类型,申请accesstoken流程中,此值为“authorization_code”,在刷新令牌的过程中,此值为“refresh_token”
code 上一步中获取的Authorization Code
state 用于第三方应用防止CSRF攻击,成功授权后回调时会原样带回。请务必严格按照流程检查用户与state参数状态的绑定。

返回说明:

如果成功返回,即可获取如下参数

参数说明 描述
access_token 授权令牌,Access_Token。
access_expires_in 该access token的有效期,单位为秒。
refresh_token 授权刷新令牌,Refresh_Token。
refresh_expires_in 该refresh token的有效期,单位为秒。
userid 授权用户的User ID。

四,Client-side flow

此流程适合ISV没有自己的web服务器,且应用为原生程序,即客户端应用(同时应用无法与浏览器交互,但是可以外调用浏览器)。 请求的流程:(1)用户发起授权请求, 开发平台验证后,获取code,并置换出accesstoken(2)获取访问令牌

1. 通过拼接以下链接(注意替换以下client_id、redirect_uri和state)打开用户登录页面,登录后进行授权(页面操作同Server-side-flow方式): https://oauth.realshark.com/authorize?response_type=token&app_key=12304977&state=1212

2. 直接通过client 获取accesstoken 的信息。

以js端为例,最终返回的地址格式为:http://requiretoken.xxx.com/oauthCallBack/#access_token=6a42dbd2ef9cf3489a4913039838e12b

五,刷新Token

通过前两种流程,获取了Access token以及Refresh token(对于具有“获取Refresh token权限”的应用),但是一般来讲,access token都有一定的时效性,在刷新有效时长内必须通过Refresh token 来延迟Access token的时长。

请求的流程有:(1)通过http post请求https://oauth.realshark.com/token发送刷新。

请求参数如下:

参数 是否必选 参数值 参数说明
app_key 接入时申请的app_key
app_secret 接入时申请的app_secret
grant_type refresh_token 授权类型,申请accesstoken流程中,此值为“authorization_code”,在刷新令牌的过程中,此值为“refresh_token”
refresh_token 授权颁发的刷新令牌
state 用于第三方应用防止CSRF攻击,成功授权后回调时会原样带回。请务必严格按照流程检查用户与state参数状态的绑定。