重庆互联网,19年企业互联网解决经验,专业网站开发、移动端开发、微信端开发、小程序开发!
重庆网络推广公司

微信云托管教程(四十八):云调用错误排查及常见问题

作者:重庆互联网小徐 发布时间:2023-12-04 浏览:24742 赞(4854 收藏 评论(0)

常见错误排查指引

access_token missing rid: xxxxxx

  • 检查是否开启了开放接口服务。开启后,需要发布一次新版本才能生效。

  • 代码中请不要在服务启动阶段使用云调用,此时开放接口服务还未生效。

access_token expired rid: xxxxxx

检查是否自行实现了 jscode2session 或使用了过期的 access_token,如果代码中使用了 access_token,可以去掉相关逻辑后重试。

api unauthorized rid: xxxxxx

当前主体没有调用此API接口的权限。一般发生在资源复用的情况下,比如小程序下的环境里面,调用公众号的接口。需要添加from_appid参数来指定你的api调用主体,不填的话就默认是环境所属小程序的主体。

具体可以参考此文档

访问api.weixin.qq.com接口时,报错提示502(bad gateway)等相关错误

开启「开放接口服务」时,部分接口在未配置白名单时会返回502状态码,部分框架的请求靠状态码识别,就会出现相关报错。这种情况下建议先看一下白名单配置,如果仍然不可以,则关闭「开放接口服务」,重新发布服务版本观察是否解决。

关闭「开放接口服务」后,如果想使用免鉴权,可以使用令牌形式完成。微信支付、对象存储等扩展api建议使用另外的服务来提供。出现状态码问题,一般都是框架和开放接口服务不融合,所以可以尝试修正框架使用来解决融合问题,实在不行再关闭「开放接口服务」

如果你使用 snsjscode2sessiongetAccessToken类接口,自行维护access_token,则不需要开启开放接口服务,可以关闭「开放接口服务」然后重新部署一下自己的业务服务。

errcode: 85105 not authorized / errcode: 48001 api unauthorized

缺少接口权限,检查是否使用 公众号 AppID 调用了 小程序 的接口,或使用 第三方 Open 账号等缺少小程序身份的接口调用了小程序接口。或未在 mp.weixin.qq.com 上申请对应接口的权限,或使用了第三方的 AppID 调用了缺少授权的接口。

第三方接口与小程序接口不同,请参考 第三方平台接口文档

errcode: 85112 cloudbase_secret not found / error_type: GatewayError / error_type: SafeLinkError

链路异常,请提交工单,并附上环境 ID,AppID 和调用时间,RequestID 等信息。

errcode: 85113 cloudbase_token is not ready yet, please try again later

云调用服务尚未初始化(常见于第一个版本),请等待数分钟后重试。如果仍然出现错误,请提交工单。

errcode: 85107 URL不在白名单内,请前往「微信云托管控制台-服务管理-云调用-微信令牌」配置

检查是否将后端需要调用的微信的接口(以 https://api.weixin.qq.com 开头的)以正确的格式添加到了「开放接口服务」的接口白名单内。

注意:不是填你的后端业务接口,比如请求 https://api.weixin.qq.com/wxa/msg_sec_check 接口,则需要配置 /wxa/msg_sec_check 到白名单中。

如果你使用 snsjscode2sessiongetAccessToken类接口,自行维护access_token,则不需要开启开放接口服务,可以关闭「开放接口服务」然后重新部署一下自己的业务服务。

开启「开放接口服务」情况下,使用jscode2session会发生白名单配置错误,原因是:开放接口服务以调用是否传 access_token 参数判定是否走原生。因为jscode2session没有access_token 参数,所以就会发生走「开放接口服务」鉴权情况。这种情景下,可以关闭「开放接口服务」然后重新部署一下自己的业务服务。在这里还是建议不要在云托管中用code登录的形式,具体可以参看此文档

errcode":40001,"errmsg":"invalid credential, access_token is invalid or not latest

云调用不支持免鉴权调用非 OpenAPI 接口

常见问题

证书问题,常见表现:Error: self signed certificate / x509: certificate signed by unknown authority

由于开放接口服务需要对请求进行处理,开放接口服务推荐使用 HTTP 协议进行使用。同时,本地调试暂仅支持 HTTP 协议调试。

使用 HTTPS 证书时,需要确认容器内拥有 shell,并已安装 ca-certificates 模块。如果使用了自带根证书的语言,可参考 开放接口服务 中的说明。

使用 HTTP 是否会带来安全问题?

开放接口服务在容器内进行网络交互,请求不会离开用户容器(解析到 169.254.0.x)。使用 HTTP 访问不会带来安全问题。

云调用请求中文入参出现乱码

query做一下 encode即可:/api/xx/xx?query=${encodeURIComponent('中文')}

其他注意事项

  1. 开启「开放接口服务」,请求中如果仍然附带access_token,不会覆盖掉,这类操作通常用于资源复用场景下,资源复用使用可参考这里

  2. 使用 secret 置换的 access_token,经过开放服务不需要配置白名单,原因如第1条,不覆盖。但如果使用「开放接口服务」鉴权,则必须使用白名单,因为其仍然使用 cloudbase_access_token

  3. 通过请求头返回 x-openapi-seqid 和解析地址为内部地址(10.0.0.x / 169.254.0.x)判断是否使用了开放接口服务。

  4. 部分自带根证书的运行时,需要手动设置证书,证书目录为: /app/cert/certificate.crt

  5. 开放接口服务集成的其他能力(如微信支付对象存储),应按照微信云托管提供的文档指引使用。

  6. 开放接口服务依赖 shell, 如镜像内无 sh/bash 将无法正常部署容器(如 scratch 作为基础镜像时)。

—————————————————————————————————————————————————————

重庆互联网项目从2004年开始为各行各业提供互联网发展解决方案,专业从事网站、小程序、微信公众号、APP、电商平台、系统等互联网平台开发,帮助企业实现从传统行业到互联网的完美转型。截止目前,重庆互联网合作的企业遍布全国各地,19年的开发经验和完善的售后服务体系获得合作客户的高度认可!

关注重庆互联网官方公众号,即可获取粉丝专享福利!

重庆互联网公众号二维码.jpg

网友留言评论
我要评论
评论

欢迎广大用户为此页面进行评价,评价成功将获得积分奖励!

  • 赞(0
    踩(0
重庆网站定制建设
  • 重庆网站建设平台
  • 重庆网站优化公司
  • 重庆网络推广公司哪家好
  • 重庆APP制作公司
版权所有 ©2004-2024 重庆市渝中区圣灵科技信息有限公司 渝ICP备16004600号-14 渝公网安备50010802001420号 电子营业执照
重庆公众号制作哪家好
二维码
联系客服 重庆商城网站建设