微信第三方开发平台code换session_key说的特别容易,但是我一使用就带来无穷无尽的烦恼,搞了一整天也无济于事.
现在记录一下解决问题的过程,方便后来人参考.
我遇到的这个问题搜索了整个网络也没找到几个有用的信息,一般都是说确实过期了,要么就是没过期,但是2个调用,你使用了旧了,说白了还是过期了.但是我的确定没有过期,因为我是使用postman手工拿的 component_access_token
下面是微信官方文档的说明:
第三方平台代替小程序实现登录功能请参考一般小程序接口文档wx.login 部分内容。除了下述部分以外,其他接口的功能与一般小程序实现方式一致。
code 换取 session_key
第三方平台开发者的服务器使用登录凭证 code 以及第三方平台的component_access_token 获取 session_key 和 openid。其中 session_key 是对用户数据进行加密签名的密钥。为了自身应用安全,session_key 不应该在网络上传输。
请求方式:
报错的完整信息:
{"errcode":40001,"errmsg":"invalid credential, access_token is invalid or not latest, hints: [ req_id: JhF.bA0078hb29 ]"}
看到一篇文章 https://blog.youkuaiyun.com/zhu_lizhen/article/details/79043598
说是有可能是调用次数多导致的, 这到给我了一个思路,难道我调用次数太多了?
我使用的是 weixin-java-tools https://gitee.com/binary/weixin-java-tools 提供的封装, 确实会在失败的时候多尝试一次,准备等一等,明天再试试吧
2018/08/21
经过一夜的郁闷,以为是调用次数限制,今天上午试了一下还是一样的错误
在 weixin-java-tools 微信群里遇到一个朋友有相同的问题, 到下午的时候,跟他交流的时候,他的问题解决了,原来如此简单
需要在 授权测试公众号列表 里在把小程序的原始id加上
这个靠看文档,看不到呀,以为加上公众号的原始id就行了,没想到是不行.
另外还有一个坑, 拿不到unionid
sessionKey, openid都能拿到,用户授权了,还是拿不到 unionId
经过网上搜索及测试,发现公众号要进行第三方平台授权,
经过亲测,还需要几件事件,公众号要绑定进开放平台,小程序也要绑定开放平台
如果都不绑定,拿不到统一ID ,如果关注了公众号, 在code 换session_key阶段,可以拿到unionId,前提是必须绑定公众号进开放平台
如果是代实现的,估计有点难呀.