微信小程序获取用户信息与 openid 完整实践

举报
yd_238049558 发表于 2026/10/13 22:43:31 2026/10/13
【摘要】 微信小程序获取用户信息与 openid 完整实践微信开放平台的文档体验确实不太理想:更新不够及时,内容组织也比较混乱,授权接口隔一段时间就会调整,每次改动都要在文档里跳来跳去,始终找不到一条完整的链路。同一套平台维护多套接口文档,也算是少见。不过吐槽归吐槽,该用的接口还是得用。先看官方规划的小程序登录流程。核心链路是小程序端调用 wx.login 获取临时 code,再通过 wx.reque...

微信小程序获取用户信息与 openid 完整实践

微信开放平台的文档体验确实不太理想:更新不够及时,内容组织也比较混乱,授权接口隔一段时间就会调整,每次改动都要在文档里跳来跳去,始终找不到一条完整的链路。同一套平台维护多套接口文档,也算是少见。不过吐槽归吐槽,该用的接口还是得用。
先看官方规划的小程序登录流程。核心链路是小程序端调用 wx.login 获取临时 code,再通过 wx.request 将 code 传给开发者自己的服务端;服务端再带着 appid、appsecret 和 code 与微信服务端通信,最终换取 openid 和 session_key 等用户信息。
这里三个参数都很明确:code 由 wx.login 接口获取;appid 是每个小程序固定的唯一标识,在小程序后台可以查到;appsecret 也可以在小程序后台生成。整体步骤其实并不复杂,真正的难点在于开发者服务端与微信服务端通信获取 openid 这一步。微信文档中点击 auth.code2Session 请求路径时有时会报 404,维护确实有疏漏。正确的新地址是 developers.weixin.qq.com/miniprogram...,打开后就能看到对应的接口文档。
下面是我使用的后端代码片段,仅供参考:
String realLoginUrl = getRealUrl(code);
logger.info("=================请求微信获取用户信息地址:{}",realLoginUrl);
String result = HttpUtils.httpsRequest(realLoginUrl, HttpUtils.GET, null);
JSONObject resJson = JSON.parseObject(result);
String errcode = resJson.getString("errcode");
if (!StringUtils.isEmpty(errcode)) {
    String errmsg = resJson.getString("errmsg");
    logger.info("微信登录异常,异常原因:{},{}", errcode, errmsg);
    throw new BussException("微信登录异常");
}
String openid = resJson.getString("openid");
if (StringUtils.isEmpty(openid)) {
    throw new ParamException("无法获取openid信息");
}
String sessionKey = resJson.getString("session_key");
ApiResult apiResult = new ApiResult();
apiResult.getData().put("openid", openid);
apiResult.getData().put("sessionKey", sessionKey);
到这里,获取 openid 的完整过程就结束了。
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。