AccessToken
大约 2 分钟languagewechat
概述
从 2021.12 之后不可使用微信用户 openId 直接获取账号信息了,必须在 H5 页面(微信代理过的地址 - 不可直接使用自己的项目页面地址)通过页面的 code 多次请求微信服务器来获取微信账号信息(主要为了获取昵称)。此时新增 H5 页面的请求 token (以前请求微信账号时需要的 token 和推送模板消息、获取二维码使用同一个 token)。2025年10月11日 请求微信服务号/订阅号/小程序的 access_token 都采用地址 https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
注意点
推送模板消息、请求临时带有场景值的二维码都需要用到 token,并且共用一个 token。默认有效期2个小时(7200秒),当请求新的 token 后旧的 token 仍有5分钟的有效期,超过5分钟则旧 token 失效,必须使用新 token 进行业务。否则微信返回响应消息时报错代码 40001.错误消息体模型是
private int errcode;
private String errmsg;
// 官方响应来错误码的案例:{"errcode":43101,"errmsg":"user refuse to accept the msg rid: 68e9193f-72a982c1-41b54e62"}
// 响应有效token的数据是:{"access_token":"97_9djhkfeR7vUR0TAuxf5rTIUp2OQpPdPQBNiy2OMWMtTYd8HVN67Muwk7H8nzMfM09CNU6-XPmEO-G2ci3ey6dR1u1Aeu89ahwUQ-Tq1vT17e2R7GHrjTbkf2uh4BSKeACAFWO","expires_in":7200}
所以在请求微信用户信息接受响应对象的模型中要包含该两个属性,否则当微信响应来错误码时会导致反序列化失败,无法接受到错误响应数据。 在网筒微信后台服务中两处都有请求新 token 的逻辑:WechatUtils 和 WxAccessToken。导致互相将对方的 token 重置为无效,导致有时二维码不显示。后来删除 WechatUtils 中获取新 token 的逻辑,整个项目仅使用 WxAccessToken 解决该问题。
