# 开放应用服务模式 本开发攻略介绍开放服务模式下获取Access Token的授权验证,获取Access Token前请先获取商户Code。 [TOC=2,3] ## 获取商户Code 地址:`https://open-api.10ss.net/oauth/authorize` 请求方式:GET 应用授权URL拼装 ~~~ https://open-api.10ss.net/oauth/authorize?response_type=code&client_id=2015101400445465&redirect_uri=http%3A%2F%2Fexample.com&state=1 ~~~ |名 称|类 型|描 述| |----|----|----| |client_id|string|易联云颁发给开发者的应用ID 非空值| |response_type|string|授权类型,固定参数为“code”,表示授权码模式| |redirect_uri|string|开发者自身的回调地址 (需要urlencode)| |state|string|用于保持请求和回调的状态,在回调时,会回传该参数。开发者可以用这个参数验证请求有效性,也可以记录用户请求授权页前的位置。可防止CSRF攻击| 商户授权成功后,pc或者手机客户端会跳转至开发者定义的回调页面(即redirect_uri参数对应的url),在回调页面请求中会带上当次授权的授权码code和开发者的state(code有效期600秒,超时无效)示例如下: ~~~ redirect_uri?response_type=code&code=xxxx&state=xxxx ~~~ ## 使用Code换取Access Token 地址:`https://open-api.10ss.net/oauth/oauth` [境外地址](apiprotocol.md) 请求方式:POST **所需参数(获取access_token并授权终端)** |名 称|类 型|描 述| |----|----|----| |client_id|string|易联云颁发给开发者的应用ID 非空值| |grant_type|string|授与方式(固定为 “authorization_code”)| |sign|string|签名 详见API文档列表-[接口签名](apiprotocol.md)| |code|string|授权码code | |scope|string|授权权限,传all| |timestamp|int|当前服务器时间戳(10位)| |id|string|UUID4 详见API文档列表-[uuid4](apiprotocol.md)| ## 使用Refresh Token更新Access Token 地址:`https://open-api.10ss.net/oauth/oauth` 请求方式:POST 所需参数 每台终端的Access Token更新频次限制: 20次/日 |名 称|类 型|描 述| |----|----|----| |client_id|string|易联云颁发给开发者的应用ID 非空值| |grant_type|string|授与方式(固定为 “refresh_token”)| |scope|string|授权权限,传all| |sign|string|签名 详见API文档列表-[接口签名](apiprotocol.md)| |refresh_token|string|更新access_token所需| |id|string|UUID4 详见API文档列表-[uuid4](apiprotocol.md)| |timestamp|int|当前服务器时间戳(10位)| ## 同步响应参数说明 每台打印机都有唯一的access_token.请开发者做好存储。 |名 称|类 型|描 述| |----|----|----| |access_token|string|访问令牌,API调用时需要,在令牌有效期内可以重复使用,请开发者全局保存| |refresh_token|string|更新access_token所需,有效时间35天| |expires_in|int|令牌的有效时间,单位秒 (30天)| |machine_code|string|易联云终端号| 示例如下: ~~~ {'error':'0','error_description':'success','body':{'access_token':'xxxx','refresh_token':'xxxx','machine_code':'xxxx','expires_in':2592000,'scope':'all'}} {"error":"2","error_description":"client_id不存在"} {'error':'11', 'error_description':'sign验证失败'}, {'error':'12', 'error_description':'缺少必要参数'}, {'error':'15','error_description':'权限不能大于初次授权的权限'} {'error':'19', 'error_description':'应用未上架或已下架'}, {'error':'33', 'error_description':'Uuid不合法'}, {'error':'41', '获取或更新access_token的次数,已超过最大限制次数!'}, ~~~