前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >云通信IM案例分享-图片语音消息发送失败,错误码70402

云通信IM案例分享-图片语音消息发送失败,错误码70402

原创
作者头像
linpeiyang@云通信专项团队
修改2020-11-26 11:07:08
2K0
修改2020-11-26 11:07:08
举报

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

图片信息发送失败
图片信息发送失败

客户提到文字信息没有失败,说明

消息上行到云通信IM后台 -> 云通信IM后台处理 -> 云通信IM后台下发消息给用户APP

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

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

显然是与COS有关了。

日志分析

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

usersig参数丢失
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自动登录

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版本的接口。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
目录
  • 日志分析
    • 为什么UserSig会丢失
      • autoLogin接口说明:
    • 问题原因:
      • 问题解决:
      相关产品与服务
      对象存储
      对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档