腾讯会议API错误码200003定位分析

2020-11-04 09:58:15 浏览数 (1)

使用腾讯会议API&SDK的企业越来越多,本文分析常见的错误码问题排查。

背景

腾讯会议(Tencent Meeting,TM)Rest API 是为参与腾讯会议生态系统建设的合作方开发者接入并访问腾讯会议资源提供的一组工具,是访问腾讯会议 SaaS 服务的入口。合作伙伴可以通过腾讯会议API 进行二次开发,例如创建一个会议,修改会议,查询会议信息等。

若 Rest API 调用失败,返回的 HTTP StatusCode 不为200时,响应体为错误信息,包含错误码和详细的错误信息。

服务错误,HTTP Status Code统一返回500。

API请求错误,HTTPStatus Code 统一返回400。

详细的错误信息可解析返回消息体中的JSON 串。

示例

HTTP/1.1 500

{

"error_info": {

"error_code": 200003,

"message": "Signature failed" // API 调用签名验证错误

}

}

案例分析

案例1

客户:“腾讯会议:创建会议的时候一直返回200003签名错误,完全按照官方的签名方式,不知道什么原因导致的“

客户:

客户:

收到这个问题,第一步帮客户进行了测试,排除了账户信息和API的问题。第二步对客户的代码进行分析,从客户发的代码截图,看到生成签名的方法和创建会议的请求参数字符串格式都没有问题。后面从客户那里拿到了完整的代码,对代码其他部分进行排查,发现错误是由于客户没有把创建会议的参数放进http的<enrity-body>里,下面图中被红框圈起来的地方在客户创建会议的代码里缺失,导致创建会议失败。告知客户改正后,问题得到了解决。

案例2

客户:“PHP调用创建会议api,按照要求,拼接相应字符串,Hmac-SHA256加密,转16进制,再转base64后提交,还是显示{"error_info":{"error_code":200003,"message":"Signature failed!"}},能帮忙查下什么原因吗“

通过对客户的代码进行分析和测试,我们发现是客户签名方法错误,客户的代码如图所示

生成了签名的字符串后依次进行了Hmac-SHA256加密,转16进制,再转base64。这是官网上对Java语言的示例,对于PHP语言,加密之后并不需要转16进制。告诉客户错误之后,问题得到了解决。

案例3

客户:“创建会议时subject字段是不是只能是英文字符,是否有限制,会议主题字段,我传中文就{"error_info":{"error_code":200003,"message":"Signature failed!"}}”

客户:“比如这两个唯一的区别就是时间戳和subject中英文,然后一个报错,一个成功创建“

客户:

收到问题后,对于中文乱码问题,首先想到的是编码方式是否正确,让客户检查代码的编码格式后,问题得到了解决。需要注意,在有中文的时候, 一定要使用utf-8的编码, gbk 等会报错。

总结与记录

最近我们经常收到客户咨询API调用时报错200003的问题。总结常见的请求错误200003有以下几种原因:

  1. 代码中有中文时,没有使用 utf-8的编码, gbk 等会报错。
  2. 请求头Registered字段,如果是非注册用户使用0,注册用户0和1都可以,用户不清楚可能会出错。
  3. php版本加密获得签名,不需要再转16进制。
  4. 有没有传入sdkId参数

遇到其他问题可联系腾讯云服务团队(腾讯云工单)

0 人点赞