微信接口返回invalid media_id hint原因分析

在调用微信获取临时素材接口时遇到invalid media_id错误。分析包括查看全局返回码说明、接口文档、前端微信JS-SDK文档,发现前端可能将临时素材ID(tmp_media_id)误传为永久素材ID(media_id)。解决方案是确保正确处理不同类型的media_id,合法形式应为:用于iOS,用于Android。
部署运行你感兴趣的模型镜像

调用微信获取临时素材接口,https://api.weixin.qq.com/cgi-bin/media/get?access_token=ACCESS_TOKEN&media_id=MEDIA_ID,出现这样的错误:{"errcode":40007,"errmsg":"invalid media_id hint: [01073723]"}

分析步骤

step1:通过查询微信公众平台技术文档的全局返回码说明,可以看到40007表示不合法的媒体文件id。
step2:查看获取临时素材接口文档,从它的参数说明好像看不出啥结果。

参数是否必须说明
access_token调用接口凭证
media_id媒体文件id

step3:既然后端调用的接口找不到原因,那么继续查看前端调用的微信JS-SDK说明文档。发现在图像接口下有一个上传图片接口。

wx.uploadImage({
    localId:'', //需要上传的图片的本地ID,由chooseImage接口获得
    isShowProgressTips:1,   //默认为1,显示进度提示
    success:function (res) {
        var serverId = res.serverId; //返回图片的服务器端ID
    }
});

从上面接口中localId的注释,又引导我看了chooseImage接口。此接口文档下有个备注,很重要,划重点,后面在讲。先来看看这个chooseImage接口。

wx.chooseImage({
    count:1,    //默认9
    sizeType:['original','compressed'], //可以指定是原图还是缩略图,默认两者都有
    sourceType:['album','camera'], //可以指定来源是相册还是相机,默认两者都有
    success:function (res) {
        var localId = res.localIds; //返回选定照片的本地id列表,localId可以作为img标签的src属性显示图片
    }
});

再来看看uploadImage接口的这个备注:

备注:上传图片有效期3天,可用微信多媒体接口下载图片到自己的服务器,此处获得的serverIdmedia_id

现在整个流程就比较通了,前端首先调用chooseImage接口获取localIds,接着调用uploadImage接口,利用参数localIds来获取serverId,后端则通过调用微信多媒体接口,利用前端传入的参数serverId来获取上传的图片。
step4:啰嗦了这么多,到底是哪出错了,首先可以确定前端传给我的id一定是微信返回的id,而从刚才的分析可以看出,id有两种。一种是localId,一种是serverId。那么就大概猜到,可能前端将localId当作serverId传给了后端。
step5:通过检查验证,果然这样。如果出现上面的问题,那么首先你应该检查你的id的格式。下面是合法的id形式:qedijYvbpoiuwn0UBeZLzM003kp4sjoeohc9epzNUhuKQLTBS-22EBlpghjio,也就是说serverId应有的形式。而localId根据你的手机系统,分为AndroidiOS两种,分别的形式为:weixin://resourceid/d5b205e1c71994dcd39b6bb2045e201fwxLocalResource://564545039458235

参考文档

  1. 全局返回码说明
  2. 获取临时素材
  3. 微信JS-SDK说明文档

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值