修改wbi文档中的流程描述 (#718)

This commit is contained in:
icyu 2023-06-23 13:49:03 +08:00 committed by GitHub
parent 6c355c0c33
commit 0abdd4b847
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -43,7 +43,7 @@
72136226c6a73669787ee4fd02a74c27
```
3. 将欲签名的请求参数排序后编码
3. 为参数中添加`wts`时间戳
若下方内容为欲签名的请求参数(以 js obj 为例)
@ -51,14 +51,29 @@
{
foo: '114',
bar: '514',
baz: 1919810
zab: 1919810
}
```
那么按照 Key 排序并进行 url query 编码后的结果应为:
`wts`字段的值应为以秒为单位的 Unix TimeStamp如`1684746387`
将`wts`参数添加在参数列表中,即:
```javascript
{
foo: '114',
bar: '514',
zab: 1919810,
wts: 1684746387
}
```
4. 将欲签名的请求参数排序后编码
按照 Key 升序排序并进行 url query 编码后的结果应为:
```
bar=514&baz=1919810&foo=114
bar=514&foo=114&wts=1684746387&zab=1919810
```
请注意,如果参数值为中文或特殊字符,则进行 url query 编码后的字符串中参数值对应的字母必须是**大写字母** (部分库会编码为小写字母)
@ -78,34 +93,24 @@
bar=%E4%BA%94%E4%B8%80%E5%9B%9B&baz=1919810&foo=one%20one%20four
```
4. 为参数中添加`wts`时间戳
`wts`字段的值应为以秒为单位的 Unix TimeStamp如`1684746387`
将`wts`参数添加在参数列表最后,即:
```
bar=514&baz=1919810&foo=114&wts=1684746387
```
5. 计算`w_rid`并添加在其后
在上一步得出的 url query 字符串后拼接第 2 步计算得出的`mixin_key`(作为盐)
```
bar=514&baz=1919810&foo=114&wts=168474638772136226c6a73669787ee4fd02a74c27
bar=514&foo=114&wts=1684746387&zab=191981072136226c6a73669787ee4fd02a74c27
```
对这个整体进行 **md5 Hash 运算**32-bit 字符小写),得到的值便是 Wbi Sign也就是参数`w_rid`
```
d3cbd2a2316089117134038bf4caf442
90efcab09403023875b8516f07e9f9de
```
最后一步,把这个计算出的值作为参数`w_rid`添加在原始参数列表后,也就完成了一次 Wbi Sign可以调用 REST API 进行请求了
```
bar=514&baz=1919810&foo=114&wts=1684746387&w_rid=d3cbd2a2316089117134038bf4caf442
bar=514&foo=114&wts=1684746387&zab=1919810&w_rid=90efcab09403023875b8516f07e9f9de
```
## Wbi签名算法实现Demo