收藏
回答

网页授权获取 openid 失败 40029 ?

目前已经能够获取到微信浏览器自动跳转后的 code 了, 但是在获取到 code 后立即向服务端发起请求, 在服务端使用获取 code 时相同的 appid 获取 openid 则一直都获取不到.

更换 AppSecret 后依然无法正常获取 openid .

示例如下:

GET https://api.weixin.qq.com/sns/oauth2/access_token?grant_type=authorization_code&appid=wxecxxxxxxxxxxxxbc&secret=4c6bxxxxxxxxxxxxxxxxxxxxxxxxf960&code=051gfx100Ja2YQ1kdI3003pqWf0gfx1s HTTP/1.1

{"errcode":40029,"errmsg":"invalid code, rid: 65448de6-2c821f0d-6493a129"}

参考的文档是: https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html#%E7%AC%AC%E4%BA%8C%E6%AD%A5%EF%BC%9A%E9%80%9A%E8%BF%87code%E6%8D%A2%E5%8F%96%E7%BD%91%E9%A1%B5%E6%8E%88%E6%9D%83access-token

------

参考 https://developers.weixin.qq.com/community/develop/doc/0008a8336ccab0164a1003aae6b800 后排除了以下可能:

+ code 过期: 不可能, code 是在浏览器端获取到以后立即发给服务端的, 不可能存在超过 5 分钟的延时.

+ code 重复使用的问题: 不可能, 服务端的日志显示仅使用过一次该 code

+ code 错误: 不可能, 通过对比微信浏览器中网站上的 vconsole 后, 可以确认网站上的 ?code=<code> 参数与服务端发起请求时的 code 参数一致.

+ code 与 appid 不匹配: 不可能, 网站发起请求时将获取 code 使用的 appid 一起发送给了服务端.


目前在猜测可能和公众号哪个地方的设置有关系, 但是缺少核对的方式.

最后一次编辑于  2023-11-03
回答关注问题邀请回答
收藏

4 个回答

  • 邓超
    邓超
    2023-11-03

    微信这个 API 设计真的拉胯, 我在几个帖子里都看到官方的人员在要求开发者自己核对几个可能性, 但是这个傻逼 errmsg 里就只告诉你 invalid code.

    你要真希望开发者自己能快速核对出结果, 为啥不每个可能性都分别对应不同的 errmsg .


    2023-11-03
    有用 3
    回复
  • 清蒸鱼
    清蒸鱼
    2023-11-03

    排除时间只能是参数的某个值出错,id或密钥。 这种问题如果是微信自身,那所有人都得出来骂几句了,尤其大公司用的多

    2023-11-03
    有用
    回复
  • 正青春
    正青春
    2023-11-03

    确认下code是否过期,是否重复使用,或者获取的code和appid不对应,检查一下

    2023-11-03
    有用
    回复 1
    • 邓超
      邓超
      2023-11-03
      检查过了.
      2023-11-03
      回复
  • จุ๊บ
    จุ๊บ
    2023-11-03

    code 无效 和 appsecret 有啥关系?code 从哪来的?

    2023-11-03
    有用
    回复
登录 后发表内容