微信公众号错误总结
来源:互联网 发布:网络市场调查问卷 编辑:程序博客网 时间: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
。
看到上面大家应该已经清楚了,没错,就是 授权 不同导致的。
我们的基础框架是当用户获取到openid
和access_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_token
时AppSecret
错误,或者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
也行)
- 微信公众号错误总结
- 微信公众号API使用总结
- 微信公众号授权问题总结
- 微信公众号开发 总结
- 微信公众号项目总结
- 微信公众号开发--简单总结
- 微信公众号支付总结
- 微信公众号支付开发总结
- 微信公众号支付总结
- 微信公众号开发总结
- 微信公众号
- 微信公众号
- 微信公众号
- 微信公众号
- 微信公众号
- 微信公众号
- 微信公众号
- 微信公众号
- Binder连接断开重启服务
- jqueryMobile 按钮
- Java 包与类的命名(util、service、tool)区别
- lleetcode 307. Range Sum Query
- EOS Platform7.2/7.5/7/.6安全开启开启方式
- 微信公众号错误总结
- linux常用命令
- Codeforces Round #415 (Div. 2) B. Summer sell-off
- node+express+mongodb,登陆代码备份二(+promise)(自用)
- linux下常用的针对进程和线程的一些命令
- Hibernate初运行异常---:MySQL server version for the right syntax to use near 'type=InnoDB'
- 第七次作业
- Vue.extend构造器
- ContextLoaderListener的作用