排查微信小程序RID

Database and Ruby, Python, History


小程序上遇到一个报错,错误码是 40029,同时给了一个 RID。

{
  "errcode": 40029,
  "errmsg": "invalid code, rid: 69625cc8-56b1ae22-1be4ab7b"
}

顺手一查,发现还可以通过 RID 反查当初的请求和一些信息,用于 debug。

微信开发了一个工具,直接访问 https://developers.weixin.qq.com/console/devtools/debug就可以查自己的 RID 了,关键还可以查 xxx/sns/xxx 类的接口。

除了上面的方式,还可以通过 API 接口查。

先获取 token https://developers.weixin.qq.com/miniprogram/dev/server/API/mp-access-token/api_getstableaccesstoken.html,然后再通过 token 查 rid 信息https://developers.weixin.qq.com/doc/oplatform/openApi/openapi/api_getridinfo.html。不过我发现 rid 信息没法通过 API 接口查 xxx/sns/xxx

下面是 curl 语句,方便直接调用

curl --location 'https://api.weixin.qq.com/cgi-bin/stable_token' \
--header 'Content-Type: application/json' \
--data '{
    "grant_type": "client_credential",
    "appid": "wx123",
    "secret": ""
}'

curl --location 'https://api.weixin.qq.com/cgi-bin/openapi/rid/get?access_token=ACCESS_TOKEN' \
--header 'Content-Type: application/json' \
--data '{
    "rid": "69625cc8-56b1ae22-1be4ab7b"
}'

登录错误 40029

对于我遇到的错误,目前看到的情况是,wx.login 获取到的 code 是无效的,可能是 5 分钟过期了,或者本来就是伪造的 code。https://developers.weixin.qq.com/miniprogram/dev/server/API/user-login/api_code2session.html

如果是被重复使用,返回应该是 {"errcode":40163,"errmsg":"code been used, rid: 69625bb3-6fc22b79-409ca184"}