收藏
回答

各位大佬好,我想通过用户的服务号openId获取unionid,但是unionid始终为null?

private String handleEventMessage(WxMpXmlMessage wxMessage) {
        String event = wxMessage.getEvent();
        String mpOpenId = wxMessage.getFromUser();
//        String unionId = wxMessage.getUnionId();
        // 1. 获取access_token (SDK会自动管理token有效期)
        //String accessToken = wxMpService.getAccessToken();

        // 2. 调用微信API
        WxMpUser user = null;
        try {
            user = wxMpService.getUserService().userInfo(mpOpenId, "zh_CN");
            log.info("用户信息: {}", user);
        } catch (WxErrorException e) {
            log.error("获取用户信息异常", e);
        }

        String unionId = user.getUnionId();

        log.info("处理事件消息: mpOpenId={}, unionId={}", mpOpenId,unionId);

        switch (event) {
            case "subscribe":   // 关注事件
                return handleSubscribeEvent(mpOpenId, unionId, wxMessage);

            case "unsubscribe": // 取消关注事件
                return handleUnsubscribeEvent(mpOpenId, unionId);
            default:
                log.info("处理其他事件类型: {}", event);
                return "success";
        }
    }


服务号和小程序已经绑定在一个微信开放平台的账号下了?希望路过大佬帮忙看看这个怎么解决

通过查询元宝ai给我这个结论:如果用户​​只关注了公众号​​,但从未登录过同一开放平台下的小程序或移动应用,微信服务器不会返回 unionId(即使公众号已绑定开放平台)

帮忙看看这个ai回答是否正确合理?




回答关注问题邀请回答
收藏

3 个回答

  • 社区技术运营专员--许涛
    社区技术运营专员--许涛
    2025-09-08

    你好,提供下postman调用用户基本信息接口传入该openID的回包截图

    2025-09-08
    有用
    回复
  • Can it be cant able to be
    Can it be cant able to be
    2025-09-08

    关注之后才有unionId

    2025-09-08
    有用 1
    回复 2
    • 闭眼听风
      闭眼听风
      发表于移动端
      2025-09-08
      您好,谢谢您的回答,我需求就是用户点关注之后,向后台服务器发送请求,在处理这个请求方法中,想通过服务号的openid拿到unionid,现在问题拿到unionid为null
      2025-09-08
      回复
    • Can it be cant able to be
      Can it be cant able to be
      2025-09-08回复闭眼听风
      不要太依赖第三方库(更新不及时),你既然拿到了openid和access_token,为什么不使用api去请求一下看看返回信息呢
      2025-09-08
      回复
  • 智能回答 智能回答 本次回答由AI生成
    2025-09-07
    有用
登录 后发表内容