logo
当前页

调用方式


请求结构

服务地址

开发者需要根据自己的服务端所在地理区域,指定相应的接入地址,向 ZEGO 服务端发送请求。

注意

为保障您的业务服务接入质量,请优先使用您的服务端所在地理区域的域名,作为接入地址,向 ZEGO 服务端发送请求。

ZEGO 支持如下地理区域的请求接入:

地理区域接⼊地址
中国⼤陆(上海)ktv-api-sha.zego.im
港澳台(⾹港)ktv-api-hkg.zego.im
欧洲(法兰克福)ktv-api-fra.zego.im
美⻄(加州)ktv-api-lax.zego.im
亚太(孟买)ktv-api-bom.zego.im
东南亚(新加坡)ktv-api-sgp.zego.im
统一接入地址(不区分区域)ktv-api.zego.im

通信协议

ZEGO 服务端 API 的所有接口均通过 HTTPS 进行通信,提供安全的通信服务。

请求方法

ZEGO 服务端 API 支持以下 HTTP 请求方法:

  • GET
  • POST
说明

所有请求参数(包括公共参数和业务参数)统⼀放在 Query,使⽤ GET 请求方法。特殊复杂 API 的业务参数放在 Body,使用 POST 请求方法。

公共参数

本节介绍了开发者调用 ZEGO 服务端 API 时使用的公共参数,包含了公共请求参数和公共返回参数。

公共请求参数

公共请求参数是每个接口都需要使用到的请求参数。

参数类型是否必选描述
AppIdUint32AppId,ZEGO 分配的用户唯一凭证。
SignatureString签名,签名的生成请参考 签名机制
SignatureNonceString随机字符串。
SignatureVersionString签名版本号,默认值为 2.0 。
TimestampInt64Unix 时间戳,单位为秒。最多允许 10 分钟的误差。
UserIdString用户 ID。
RoomIdString房间 ID,在以房间包月的场景下必传。
VendorIdNumber

版权方 ID,取值范围:0、1、2、4。请注意,不填写则默认为 0。

版权方的详细信息,请联系 ZEGO 商务人员咨询。

请求示例:

注意
  • 请勿直接拷贝下面的示例用于请求。
  • https://ktv-api.zego.im/?Action=GetPlaylistCategory 需要替换为各接口文档“接口原型”章节中的请求地址。
  • 各公共参数的取值请根据实际情况修改。
https://ktv-api.zego.im/?Action=GetPlaylistCategory
&AppId=1234567890
&Timestamp=1234567890
&Signature=Pc5WB8gokVn0xfeu%2FZV%2BiNM1dgI%3D
&SignatureVersion=2.0
&SignatureNonce=15215528852396
&UserId=221
&RoomId=123
&VendorId=0

公共返回参数

API 返回结果采用统一格式,返回的数据格式为 JSON。

每次调用接口,无论成功与否,都会返回公共参数。

参数类型描述
CodeNumber返回码。
MessageString请求结果的说明信息。
RequestIdString请求 ID。

返回示例:

{
    "Code": 0,
    "Message": "",
    "RequestId": "8411281679140263090",
    ......
}

签名机制

为保证 API 的安全调用,ZEGO 服务端会对每个 API 的访问请求进行身份验证。开发者在调用 API 时,都需要在请求中包含签名 Signature 信息。

注意

每次调用接口都需要生成新的签名。

密钥获取

Signature 通过使用 AppID 和 ServerSecret 进行对称加密的方法来验证请求的发送者身份。AppID 用于标识访问者的身份,ServerSecret 用于加密签名字符串和服务器验证签名字符串的密钥,必须严格保密,防止泄漏。

AppID 和 ServerSecret 从 ZEGO 控制台 获取,详情请参考控制台文档 项目信息

签名生成

签名参数说明

参数含义
AppId应用 ID。
SignatureNonce随机字符串。公共参数里的 SignatureNonce,生成算法可参考下方签名示例。
ServerSecret应⽤密钥。
Timestamp当前 Unix 时间戳,单位为秒。生成算法可参考下方签名示例,最多允许 10 分钟的误差。
说明

计算签名所使用的 SignatureNonce 和 Timestamp 参数取值,需要和公共参数中的 SignatureNonce 和 Timestamp 参数取值保持一致。

签名生成算法

Signature = md5(AppId + SignatureNonce + ServerSecret + Timestamp)

签名字符串格式

签名采⽤ hex 编码(⼩写),⻓度为 32 个字符。

签名示例

ZEGO 提供多种编程语言的签名示例代码,开发者可根据实际情况进行参考。

import (
   "crypto/md5"
   "crypto/rand"
   "encoding/hex"
   "fmt"
   "log"
   "time"
)
// Signature=md5(AppId + SignatureNonce + ServerSecret + Timestamp)
func GenerateSignature(appId uint32, signatureNonce string, serverSecret string, timestamp int64) (Signature string){
   data := fmt.Sprintf("%d%s%s%d", appId, signatureNonce, serverSecret, timestamp)
   h := md5.New()
   h.Write([]byte(data))
   return hex.EncodeToString(h.Sum(nil))
}
func main() {
   /*生成16进制随机字符串(16位)*/
   nonceByte := make([]byte, 8)
   rand.Read(nonceByte)
   signatureNonce := hex.EncodeToString(nonceByte)
   log.Printf(signatureNonce)
   appId := 12345       //使用你的appId和serverSecret
   serverSecret := "9193cc662a4c0ec135ec71fb57194b38"
   timestamp := time.Now().Unix()
   /* appId:12345
      signatureNonce:4fd24687296dd9f3
      serverSecret:9193cc662a4c0ec135ec71fb57194b38
      timestamp:1615186943      2021/03/08 15:02:23
      signature:43e5cfcca828314675f91b001390566a
    */
   log.Printf("signature:%v", GenerateSignature(uint32(appId), signatureNonce, serverSecret, timestamp))
}

签名失败

存在以下签名失败的返回码,请开发者根据实际情况处理。

返回码说明
100000004签名过期。
100000005签名错误。

Previous

API 概览

Next

获取标签列表