作者:张振琦
上篇我们实现了服务端的签名算法,我接下来看WebIM插件里如何传入客户信息。调用的接口如下:
// SHA1示例
ud({
"customer": {
"nonce": "9ca6fff5a509fb887ac72cf5c92010e7",
"signature": "9B2619225AA6476DC1EB80DBB8801E1575EBE39C",
"timestamp": "1455675719000",
"web_token": "test@udesk.cn"
}
});
// SHA256示例
ud({
"customer": {
"nonce": "9ca6fff5a509fb887ac72cf5c92010e7",
"signature": "4CC40FA2D762DAB1D4509750A7135123743D26F2552B7E23611AB8CB5D35825B",
"timestamp": "1455675719000",
"web_token": "test@udesk.cn",
"encryption_algorithm": "SHA256"
}
});
参数描述如下:
参数名称 | 类型 | 值 | 是否必选 | 说明 |
---|---|---|---|---|
nonce | String | 随机数 | 是 | 随机数,动态的比静态随机数安全系数更高 |
timestamp | String | 时间戳 | 是 | 当前时间戳(13位毫秒) |
web_token | String | 客户ID | 是 | 客户唯一标示,推荐使用邮箱、手机号等仅支持字母、数字及下划线,禁用特殊字符 |
signature | String | 加密签名 | 是 | 参考上篇内容 |
encryption_algorithm | String | SHA1或者SHA256 | 是 | 加密算法,不填写默认为SHA1 |
nonce是一个随机数,简单实现我们就把nonce赋成和timestamp一样。web_token我们使用邮箱,网页中添加一个输入框,可以自己输入。需要注意的是,代码中传入的nonce、timestamp和web_token,必须和生成签名signature的保持一致,否则签名无效。签名就使用上篇实现的java服务,发送post请求获取。完成页面代码如下:
imdemo.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>IM</title>
<script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
</head>
<body>
邮箱:<input id="email" type="text" style="width:200px">
<button type="button"