提交工单
咨询集成、功能及报价等问题
获取 sdk_token,用于客户端登录鉴权。
请求方法:POST
请求地址:
服务环境 | 调用频率限制 | 请求地址 |
---|---|---|
正式环境 |
10 次/秒 |
https://roomkit-api.zego.im/auth/get_sdk_token |
传输协议:HTTPS
参数 | 类型 | 是否必选 | 示例 | 描述 |
---|---|---|---|---|
sign |
String |
是 |
"CIE7hNPK6Y55DeUJBQWERTY" |
md5("%s%s%d%d%d"%(secret_sign[:32].lower(), "device_id", 3, 1, timestamp))) |
secret_id |
Int |
是 |
12580 |
创建企业时,ZEGO 分配的 secret ID。 |
device_id |
String |
是 |
"38-F9-D3-87-C8-15" |
设备 ID。需要终端调用 ZegoRoomKit SDK 的 deviceID 接口生成,并传递给业务后台。 |
timestamp |
Int |
是 |
1615541262 |
请求参数中的 sign 的失效时间,Unix 时间戳,单位:秒 (例:time.now().unix()[当前时间戳]+3600[有效期])。 |
common_data.platform |
Int |
是 |
0 |
设备平台。
|
sign 中各字段说明如下:
我们提供了 Postman Collection 帮助您调测,内含本参数的生成逻辑,您可参考 服务端 API 调测指南 使用 Postman 快速调试该接口。
参数 | 类型 | 是否必选 | 示例 | 描述 |
---|---|---|---|---|
secret_sign[:32].lower() |
String |
是 |
"qwertyuiqwertyuiqwertyuiqwertyui" |
创建企业时返回的 secret_sign 取前 32位,全使用小写字母。 |
device_id |
String |
是 |
"38-F9-D3-87-C8-15" |
设备 ID。需要终端调用 ZegoRoomKit SDK 的 deviceID 接口生成,并传递给业务后台。 |
verify_type |
Int |
是 |
3 |
验证方式默认填 3,表示 SDK 平台发起验证。 |
version |
Int |
是 |
1 |
版本号,默认填 1。 |
timestamp |
Int |
是 |
1615541262 |
时间戳,单位:秒。跟输入参数中的 timestamp 保持一致即可。 |
以下是 sdk_token 接口的请求示例。
{
"common_data": {
"platform": 8
},
"sign": "CIE7hNPK6Y55DeUJBQWERTY",
"secret_id": 12580,
"device_id": "38-F9-D3-87-C8-15",
"timestamp": 1615541262
}
参数 | 类型 | 示例 | 描述 |
---|---|---|---|
ret |
Object |
- |
接口调用结果。 |
ret.code |
Int |
0 |
错误码。 |
ret.msg |
String |
"succeed" |
错误信息。 |
ret.version |
String |
"1.0.0" |
版本号。 |
data |
Object |
- |
接口调用返回数据。 |
data.sdk_token |
String |
"qwertyuiqwertyuiqwe" |
服务端返回的 sdk_token。 |
data.expires_in |
Int |
86400 |
服务端返回的 sdk_token 的过期时间。 |
以下是 sdk_token 接口的响应示例。
{
"ret": {
"code": 0,
"message": "succeed",
"version": "1.0.0"
},
"data": {
"sdk_token": "sdk_token",
"expires_in": 86400
}
}
import time
import hashlib
import json
import requests
def get_SDK_token(secret_id, secret_sign, deviceid, platform):
timestamp = int(time.mktime(time.localtime(time.time()))) + 3600
signSrc = ("%s%s%d%d%d" % (secret_sign[:32], deviceid, 3, 1, timestamp))
sign = hashlib.md5(signSrc.encode()).hexdigest()
url = 'https://roomkit-api.zego.im/auth/get_sdk_token'
data = {
"common_data": {
"platform": platform,
},
"sign": sign,
"secret_id": secret_id,
"device_id": deviceid,
"timestamp": timestamp
}
r = requests.post(url=url, json=data)
respondStr = r.text.encode('utf-8').decode('utf-8')
sdk_token = json.loads(respondStr)["data"]["sdk_token"]
return sdk_token
import (
"bytes"
"crypto/md5"
"encoding/json"
"errors"
"fmt"
"io/ioutil"
"net/http"
"testing"
"time"
)
func GetSDKToken(secretId int, secretSign, deviceId string, platform int) (sdkToken string, err error) {
// 过期时间
expired := time.Now().Unix() + 3600
// 计算hash
m := md5.New()
m.Write([]byte(fmt.Sprintf("%s%s%d%d%d", secretSign[:32], deviceId, 3, 1, expired)))
hash := fmt.Sprintf("%x", m.Sum(nil))
var reqStruct struct{
CommonData struct{
Platform int `json:"platform"`
}
SecretId int `json:"secret_id"`
Sign string `json:"sign"`
DeviceId string `json:"device_id"`
Timestamp int64 `json:"timestamp"`
}
reqStruct.CommonData.Platform = platform
reqStruct.SecretId = secretId
reqStruct.Sign = hash
reqStruct.DeviceId = deviceId
reqStruct.Timestamp = expired
reqBody, _ := json.Marshal(reqStruct)
// 发送post请求
req, err := http.NewRequest(http.MethodPost, "https://roomkit-api.zego.im/auth/get_sdk_token", bytes.NewBuffer(reqBody))
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
var resp *http.Response
resp, err = client.Do(req)
if err != nil {
return
}
defer resp.Body.Close()
var respBody []byte
respBody, err = ioutil.ReadAll(resp.Body)
if err != nil {
return
}
var ret struct{
Ret struct{
Code int `json:"code"`
Msg string `json:"msg"`
Version string `json:"version"`
} `json:"ret"`
Data struct{
SDKToken string `json:"sdk_token"`
}
}
err = json.Unmarshal(respBody, &ret)
if err != nil {
return
}
if ret.Ret.Code != 0 {
return "", errors.New(ret.Ret.Msg)
}
return ret.Data.SDKToken, nil
}
联系我们
文档反馈