App内用户发送语音和图片信息的时候出现失败,提示参数非法,但是文字信息可正常发送

kilybekbkilybekb提问于
宅女have fun……回答于
推荐

回答来自于问答智囊团成员:linpeiyang@云通信

专栏:https://cloud.tencent.com/developer/article/1750251

客户提到文字信息没有失败,说明消息上行到云通信IM后台 -> 云通信IM后台处理 -> 云通信IM后台下发消息给用户APP

这条消息收发的通路是没有问题的。

而云通信IM对图片信息&语音信息的处理逻辑 与 文字信息的区别在于, 对前者会将信息以文件形式存储到腾讯云COS,得到一个COS的URL传给云通信IM后台,云通信后台经过处理,同样将URL下发给消息接收方的用户APP, APP通过URL去腾讯云COS下载文件,展示给用户。

显然是与COS有关了。

日志分析

拿到用户终端的SDK日志,很容易发现了问题原因:

usersig参数丢失

图片语音消息上传COS之前,需要调用REST API获取COS Token,此处UserSig这个参数丢失了,导致报错。

关于REST API调用,可参阅:https://cloud.tencent.com/document/product/269/1519

关于UserSig登录鉴权, 可参阅:https://cloud.tencent.com/developer/article/1750246

为什么UserSig会丢失

继续分析终端日志发现,此客户在已经登录成功过的情况下,之后杀掉应用再重新打开应用,SDK初始化之后,此客户的登录逻辑是使用了SDK V1接口autoLogin自动登录:

autologin自动登录

autoLogin接口说明:

自动登录类似“记住密码”的功能,如果上一次已经成功登录,那么一段时间内都只需要传入用户名就可以完成登录。 相比于普通的 login(TIMLoginParam) 接口,该接口可以减少 IM SDK 向您的服务器索要 UserSig 的频率, 既可以加快登录速度,又能减少你的 UserSig 服务器压力,也在一定程度上降低了 UserSig 泄漏的风险。首次登录之后,SDK 会把登录信息存在在本地(UserSig存在内存,登录凭证存在本地),下次登录即可调用自动登录

问题原因:

用户登录成功过一次之后,UserSig存在内存,登录凭证存在本地。当用户杀掉应用或切后台一段时间被自动杀掉应用,原本存储在用户终端内存里的UserSig丢失了,而当重新开启应用,此客户的逻辑是调用autoLogin接口,不去向开发者后台请求UserSig,因此终端SDK一直没有获取到UserSig,此时调用需要UserSig的REST API请求COS token就会报错参数丢失。而用户使用其他功能不受影响是因为登录凭证仍存在本地,其他功能都是用到登录凭证来做鉴权。

问题解决:

autoLogin接口早已经在新的SDK V2版本的API里禁用了,引导不要再使用V1版本的接口。

回答过的其他问题

cdbro-*开头的mysql实例 报错?

宅女have fun……

4000,请求参数非法,缺少必要参数,或者参数值格式不正确,具体错误信息请查看错误描述 message 字段。

关于学生认证?

腾讯云AI有哪些应用?

宅女have fun……
腾讯云发布的 AI 安全能力矩阵图,以大数据、机器学习、图计算、知识库等核心技术为基础,发展以安全为导向的社交图谱分析、图像自动识别、知识表达与推理、自然语言处理四大当前热门 AI 领域为组合,形成智能身份鉴定、威胁情报分析、异常流量检测、网络攻击溯源、人机行为识别、恶意图片识别...... 展开详请

我想注销现在这个腾讯云账号,应该走什么流程?

宅女have fun……
其实要是说闲置也不是不可以。只要允许我 清空(不是换绑)对应的实名信息,或者说能允许我解除该账号关联的所有第三方信息,如 QQ、微信、邮箱等,就可以了。对大多数人而言,如果用上述 所有 凭据 都 无法登录 某个账号(即 不会被他人利用),那么这个账号就可以视为已经注销了。 据我所...... 展开详请

投诉!106907571008720一直发信息?有没有问题?

宅女have fun……
已采纳
亲,不好使的。和多号没法给 106 号段的短信平台主动发消息,就是说不管是腾讯云还是其他任何商家发给副号的短信,都没法通过回复相关字母来退订。 所以最好的方法还是联系一下腾讯云客服。 (估计是以前有用户注册了之后又耗着,想起来用券的时候已经过期了,就开始闹腾。所以为了让大家尽快用...... 展开详请

秒杀1607.14元的CPU使用有限制吗?

宅女have fun……

腾讯云 CPU 全部可以满载。想要阉割实例的,出门左转阿里云。

关于作者

所属标签

扫码关注云+社区

领取腾讯云代金券