Skip to main content

协议描述

外渠访问域名:https://api.ykysearch.qq.com

内渠访问方式,请联系开发获取

请求接口url中的version字段说明:

version 取自于接入的协议文档的大版本号,比如说协议文档是 v2.1.6 那么 version = v2

请求头(Header):

参数名是否必须参数描述
Content-Typeapplication/json
Yky-Media-App-Id媒体id,在游可盈平台申请创建
Yky-Timestamp精确到毫秒的时间戳
Yky-Nonce随机数,不超过 long 最大值
Yky-Sign-Version签名版本,值固定为1.0
Yky-Sign请求参数签名,签名方式参考下文描述

签名Yky-Sign生成规则

1.在游可盈平台创建媒体账号后,会分配一个密钥secretKey,该密匙贯穿整个路径里面的加解密,请妥善保管,谨防泄漏;

2.将上述请求头中的Yky-Timestamp、Yky-Nonce,以及媒体秘钥secretKey进行ASCII字典序升序排序;

3.对步骤二排序后的字符串拼接成一个字符串

4.将上述得到的字符串,采用secretKey进行sha-1加密,并转化为十六进制字符串作为密文Yky-Sign

Go语言示例代码如下所示:

import (
"crypto/hmac"
"crypto/sha256"
"encoding/hex"
"fmt"
"sort"
)
func main() {
timeStamp := "1660279583000"
nonce := "555"
secretKey := "abcd"
// 将传入的三个参数按照ASCII字典序排序
values := []string{timestamp, nonce, secretKey}
sort.Strings(values)
// 将排序后的参数拼接在一起,注意此处无空格
plainText := strings.Join(values, "")
encryptedVal := Sha1(plainText)
fmt.Println("plainText:", plainText, ", encrypted value:", encryptedVal)
}
func Sha1(str string) string {
h := sha1.New()
h.Write([]byte(str))
return hex.EncodeToString(h.Sum(nil))
}