获取AccessToken·一洽客服系统业务API

accessToken是一洽的全局唯一接口调用凭据,开发者在调用各接口时都需使用accessToken。开发者需要进行妥善保存。accessToken的存储至少要保留100个字符空间。accessToken的有效期目前为2个小时,需定时刷新,重复获取将导致之前获取的accessToken失效。

业务API调用所需的accessToken的使用及生成方式说明:

1、建议开发者使用中控服务器统一获取和刷新accessToken,其他业务逻辑服务器所使用的accessToken均来自于该中控服务器,不应该各自去刷新,否则容易造成冲突,导致accessToken覆盖而影响业务;

2、目前accessToken的有效期通过返回的expire_in来传达,目前是7200秒。中控服务器需要根据这个有效时间提前去刷新新accessToken。在刷新过程中,中控服务器可对外继续输出的老accessToken,此时一洽开放平台后台会保证在5分钟内,新老accessToken都可用,这保证了第三方业务的平滑过渡;

3、获取accessToken以及其他业务接口的请求需在提前将开发服务器的IP设置在IP白名单中,不在白名单中的IP请求一洽会拒绝接口调用。

接口地址:

https:${apiServer}/getToken/${appId}?timestamp=${timestamp}&nonce=${nonce}&signature=${signature}

apiServer:https://eapi.echatsoft.com

appId:分配给开发者的唯一身份标识,在开发接口配置中获取

参数说明

参数 描述
signature 一洽加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
timestamp 时间戳
nonce 随机数

signature生成过程如下:

1)将token、timestamp、nonce三个参数进行字典序排序
2)将三个参数字符串拼接成一个字符串进行sha1加密
3)一洽按照如上方法对字符串加密后与参数中的signature对比,如果一致则认为是合法的请求

检验signature的JAVA示例代码:

public boolean verifyUrl(String msgSignature, String timeStamp, String nonce)
            throws AesException {
        String signature = SHA1.getSHA1(token, timeStamp, nonce);

        if (!signature.equals(msgSignature)) {
            throw new AesException(AesException.ValidateSignatureError);
        }

        return true;
    }

一洽的签名生成方式和微信一致。

C# C++ Java PHP Python 微信代码示例下载:示例代码

示例:

token:myToken
timestamp:myTimestamp
nonce:myNonce
signature输出:81ceaac69a2f44be4f98d4adbea202d5792c62bb
getUrl:http://api.echatsoft.com/getToken/EAAAAAAEEEECCCCDDDEE599C2A9CNNNSSSFF?timestamp=myTimestamp&nonce=myNonce&signature=81ceaac69a2f44be4f98d4adbea202d5792c62bb

返回说明

正常情况下,一洽会返回下述JSON数据包给公众号:

{"access_token":"ACCESS_TOKEN","expires_in":7200}

参数说明

参数 描述
access_token 获取到的凭证
expires_in 凭证有效时间,单位:秒戳

错误时一洽会返回错误码等信息,JSON数据包示例如下(该示例为IP不在白名单中):

{"errcode":10002,"errmsg":"invalid ip addr"}