微信公众号错误总结

来源:互联网 发布:网络市场调查问卷 编辑:程序博客网 时间:2024/05/17 22:13

    • 错误一 48001 api unauthorized
    • 错误二 40029 获取access_token失败errmsg invalid code
    • 错误三 拼接的微信长链接IOS点击正常Android无法访问或直接跳转浏览器进行授权操作
    • 错误四 40001 errmsg invalid credential
    • 错误五 config invalid signature
    • 错误六 40163 errmsg code been used

该篇博客是对本人微信公众号开发过程中遇到的所有错误整理,将会持续更新。


错误一: [48001] api unauthorized

当跳转到第三方微信服务号时,报错提示api unauthorized。

错误分析
1. 微信公众号未授权 (当然,授权功能是只针对已认证服务号,订阅号不具备该权限)
2. 作用域(scope参数)设置错误:
 这里先介绍微信两种网页授权scope区别:
 a. snsapi_base – 静默授权,无需用户手动授权,但只能获取到用户openid,获取的access_token为普通access_token
 b. snsapi_userinfo – 手动授权,可获取用户基本信息与授权access_token

 看到上面大家应该已经清楚了,没错,就是 授权 不同导致的。
 我们的基础框架是当用户获取到openidaccess_token后自动去获取用户信息,而此时我们若使用静默授权,普通access_token并不具备这种权利,就导致如题错误。

解决方法
1. 进行微信服务号认证;
2. 将scope作用域 设置为 snsapi_userinfo


错误二: [40029] 获取access_token失败,errmsg : invalid code

时不时出现的问题,很恼人。

错误分析
官方错误码:40029 – 不合法的oauth_code
顾名思义,问题是由于微信返回时code错误引起的。

解决方法

官方说明
code说明 : code作为换取access_token的票据,每次用户授权带上的code将不一样,code 只能使用一次,5分钟未被使用自动过期。

因此报错有三种可能:
1. code 超过5分钟未使用,失效 – 重新获取即可。
2. code 被多次使用 – 检查链接是否多次调用;判断微信返回码,为 40029 则重写code;记录openID,若5分钟内多次出现,限制获取code。
3. code 正常,但存储的access_token未被重写 – 检查写入access_token是否正常。


错误三: 拼接的微信长链接,IOS点击正常,Android无法访问或直接跳转浏览器进行授权操作

该问题为链接拼接错误,重新拼接即可。


错误四: [40001] errmsg : invalid credential

错误分析
官方错误码:40001 – 不合法的凭据

解决方法

官方说明
获取access_tokenAppSecret错误,或者access_token无效。请开发者认真比对AppSecret的正确性,或查看是否正在为恰当的公众号调用接口

报错提示很明显,要么是AppSecret错要么是access_token无效;
1. AppSecret错 – 检查微信配置是否正确;
2. access_token无效 – 多个公众号冲突导致。

在我的程序中就是存在两个公众号跳转,但由于配置文件问题,导致两个公众号在同一个位置配置access_token,而当程序切换时使用到不匹配的access_token就报这个错。

直接将文件中缓存的access_token配置清空,重新获取即可。
ps:配置一定要修改


错误五: config : invalid signature

错误分析
官方错误码:微信 JS 接口签名不合法;
使用官方在线校验工具(https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign) 生成 signature 与本地程序生成的一致,但是仍然提示报错 invalid signature。经过参数分析发现,是签名URL与当前页面URL不一致导致的报错。

解决方法
参数中的URL为 ip 地址,但实际访问时是走的 域名
因此,将参数中URL改为域名即可。


错误六: [40163] errmsg : code been used

错误分析
顾名思义罗,很简单,就是微信返回的code 被重复使用导致的,问题很简单,重点是为什么会导致这个问题。

下面是我的问题重现
1. 清除缓存
2. 点击长链接访问,授权成功,并且正常进入回调页面,日志打印测试信息成功
3. 回调完成后,报错提示40163

重复测试几次后,页面出现“非微信官方网页 转换为手机预览模式”提示,该提示出现在第二步之后,也就是表明此时回调应该是已经完成才对,而当我点击“继续访问”后,出现回调报错。

我来捋一捋,为什么code 会报错,因为重复调用;那为什么重复调用呢,因为在提示“非微信官方网页 转换为手机预览模式”前已经完成回调,而我们点击“继续访问”就变成了第二次回调,也就是重复使用code 啦。

综上,我们的实际问题也就转换为了:为什么会出现“非微信官方网页 转换为手机预览模式”该提示(此处只是个例)。

通过各种搜索与实践后发现,是由于 域名 导致的,我这边使用的 花生壳 的免费域名,而此域名很有可能已经被微信屏蔽,无法正常使用,买了个域名后,程序通过。(╮(╯▽╰)╭ 天上果然不能掉馅饼啊)

ps: 如果是使用微信测试号的话,可以直接使用 IP 访问。(内网IP也行)

原创粉丝点击