{errcode : 40094 ,errmsg : req id: 40ZR.a0918ns30, invalid component credential}
这个是我遇到的问题网页授权oauth2.0错误信息
我当时思路如下:
1、微信服务器返回给我的授权码code是没有问题的,因为他不是invalid code这个错误
2、accesstoken肯定没问题,因为也没报 invalid accesstoken这个错误
3、微信官网找此错误码,发现居然没有,虽然找到一个一样的错误码40094,但是那个是微信卡卷的跟这个不是一个概念
4、百度,google满世界找这个错误码,发现找到的只有两条类似的,都没解决,但是在里面有人说可能是阿里云服务器IP不是固定的原因导致的
5、问了下我们的阿里云服务器IP是买的固定的
6、实属无奈之下猜想是不是,腾讯跟阿里巴巴竞争封他的IP
至于我为什么会有以上想法完全是因为,这个网页授权有时可以,有时不行,而且毫无规律可言
但不能获取授权token+openid的时候 就会一直出现40094错误
解决办法:最终解决发现问题来源是,缓存服务器的问题即accesstoken问题
1、至于我为什么没考虑到token过期,因为他始终没出现过token过期的问题
2、导致token过期的罪魁祸首是,因为我们申请了两个测试公众号第三方用于开发,我们的token都是存储在阿里云OCS缓存里面,将这个token添加到缓存的时候有个key值,因为我用的这个环境跟另外一个环境所配置的key值是一样的,那后来导致的后果就是,谁的后刷新,谁的token就可以用,所以会出现有时可以有时不行,
当我的后刷新token的话那就可以成功访问,当我的先刷新的话我的就不能访问,因为后者替换了前者,所以实际上取出来的token是没有过期的,但是跟这个第三方应用对接不上也就是key!=value,所以不存在token过期的错误,才会出现以上的凭证不对的错误,微信首先验证token是否有效,然后再去根据appid和token进行相应的处理吧,所以我的应用相当于用了一个其他应用有效的token,当然token跟应用对接的原理大伙可以看看网页授权2.0的实现机制,所以最终把另外一个应用的云缓存key值换了,结果现在畅通无阻,整个世界清静了,当然token过期是同事找到的,因为我被他的错误码误导了,导致我排除了token无效的思路
来源:oschina
链接:https://my.oschina.net/u/1027520/blog/507504