You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

96 lines
3.3 KiB
Plaintext

<#escape x as x?html>
<section>
<h1 class="blue" data-id="intro">
<i class="ace-icon fa fa-leaf green"></i>
签名算法
</h1>
<div class="help-content">
<h2 class="header lighter blue"><i class="ace-icon fa fa-compass orange"></i> 该签名算法描述如下</h2>
<ul class="list-unstyled spaced2">
<li> <i class="ace-icon fa fa-hand-o-right"></i> 所有请求参数按参数名升序排序; </li>
<li> <i class="ace-icon fa fa-hand-o-right"></i> 按请求参数名及参数值相互连接组成一个字符串; </li>
<li> <i class="ace-icon fa fa-hand-o-right"></i> 将应用密钥(appSecret)分别添加到以上请求参数串的头部和尾部;</li>
<li> <i class="ace-icon fa fa-hand-o-right"></i> 对该字符串进行 SHA1 运算,得到一个二进制数组;</li>
<li> <i class="ace-icon fa fa-hand-o-right"></i> 将该二进制数组转换为十六进制的字符串,该字符串即是这些请求参数对应的签名;</li>
<li> <i class="ace-icon fa fa-hand-o-right"></i> 该签名值使用sign系统级参数一起和其它请求参数一起发送给服务开放平台;</li>
</ul>
<h2 class="header blue lighter"><i class="ace-icon fa fa-coffee green"></i> 应用示例</h2>
<table class="table table-bordered table-hover">
<thead>
<tr>
<th>系统参数名称</th>
<th>参数值</th>
<th>业务参数名称</th>
<th>参数值</th>
</tr>
</thead>
<tbody>
<tr>
<td>appKey</td>
<td>00001</td>
<td>client</td>
<td>iphone</td>
</tr>
<tr>
<td>sessionId</td>
<td>6E75C7EFB7214115A1D8C119D23206F1</td>
<td></td>
<td></td>
</tr>
<tr>
<td>method</td>
<td>member.get.type</td>
<td></td>
<td></td>
</tr>
<tr>
<td>v</td>
<td>1.0</td>
<td></td>
<td></td>
</tr>
<tr>
<td>timestamp</td>
<td>1422278372079</td>
<td></td>
<td></td>
</tr>
<tr>
<td>format</td>
<td>json</td>
<td></td>
<td></td>
</tr>
<tr>
<td>locale</td>
<td>zh_CN</td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
<p>根据签名算法,首先按字母顺序将所有参数名和参数值拼装成一个字符串:</p>
<div class="well">
appKey00001clientandroidformatjsonlocalezh_CNmethodmember.get.typesessionId6E75C7EFB7214115A1D8C119
D23206F1timestamp1422278372079v1.0
</div>
<p>假设,appKey 为 00001 的appSecret是”abcdeabcdeabcdeabcdeabcde”,则将”abcdeabcdeabcdeabcdeabcde”分别添加到以上请求参数串的头部和尾部,得到:</p>
<div class="well">
abcdeabcdeabcdeabcdeabcdeappKey00001clientandroidformatjsonlocalezh_CNmethodmember.get.typesessionId
6E75C7EFB7214115A1D8C119D23206F1timestamp1422278372079v1.0abcdeabcdeabcdeabcdeabcde
</div>
<p>对以上字符串进行SHA1签名运算,将签名值转换为十六进制的编码串,得到:</p>
<div class="well">
597F35A0819B806F7CAED2D0EEC11563675148A
</div>
<p>最后,客户端即可使用如下的URL请求串对member.get.type服务方法发起请求:</p>
<div class="well">
http://serverURL/servletUri?
client=android&locale=zh_CN&format=json&sign=597F35A0819B806F7CAED2D0EEC11563675148A0&timestamp=1422278
372079&v=1.0&sessionId=6E75C7EFB7214115A1D8C119D23206F1&method=member.get.type&appKey=00001
</div>
<div>
</section>
</#escape>