binarywang/WxJava

微信小程序用户信息解密方法不返回openid吗

Closed this issue · 6 comments

微信小程序用户信息不返回openid吗

简要描述

小程序文档有openid字段,但是SDK工具没有

模块版本情况

  • WxJava 模块名: weixin-java-miniapp
  • WxJava 版本号: 4.6.0

详细描述

小程序文档用户信息解密有openid字段,

如接口 wx.getUserInfo 敏感数据当中的 watermark:

{
    "openId": "OPENID",
    "nickName": "NICKNAME",
    "gender": GENDER,
    "city": "CITY",
    "province": "PROVINCE",
    "country": "COUNTRY",
    "avatarUrl": "AVATARURL",
    "unionId": "UNIONID",
    "watermark":
    {
        "appid":"APPID",
        "timestamp":TIMESTAMP
    }
}

但是使用
maService.getUserService().getUserInfo(sessionKey, encryptedData, iv)方法返回的用户信息Java没有openid

public class WxMaUserInfo implements Serializable {
    private static final long serialVersionUID = 6719822331555402137L;
    private String nickName;
    private String gender;
    private String language;
    private String city;
    private String province;
    private String country;
    private String avatarUrl;
    private String unionId;
    private Watermark watermark;

    public static WxMaUserInfo fromJson(String json) {
        return (WxMaUserInfo)WxMaGsonBuilder.create().fromJson(json, WxMaUserInfo.class);
    }

    public WxMaUserInfo() {
    }
}

尽管在获取SessionKey时有openid字段;但是我自己的方法直接返回WxMaUserInfo对象不能使用openid;

这个接口已经过期了

哦哦,看了下文档说调整;
https://developers.weixin.qq.com/community/develop/doc/000cacfa20ce88df04cb468bc52801

不过,文档的 解密得到数据 那里还是展示了openid
image

你确定还可以得到吗?不是已经建议尽快迁移到使用getUserProfile了吗?

getUserProfile

写完这个issue后也用getUserProfile,得到的数据也是一样的加解密方法,有WxJava谁还会想着去自己实现解密数据,分两步调用把返回数据组合才能使用OpenID加用户信息了:SessionKey获取OpenID,解密再获取用户信息。

getUserProfile

写完这个issue后也用getUserProfile,得到的数据也是一样的加解密方法,有WxJava谁还会想着去自己实现解密数据,分两步调用把返回数据组合才能使用OpenID加用户信息了:SessionKey获取OpenID,解密再获取用户信息。

建议在小程序调用 wx.login() 获取 code,后端使用 code 换去 openid (如果该小程序绑定了开放平台还可以获取到用户的 unino_id)

getUserProfile

写完这个issue后也用getUserProfile,得到的数据也是一样的加解密方法,有WxJava谁还会想着去自己实现解密数据,分两步调用把返回数据组合才能使用OpenID加用户信息了:SessionKey获取OpenID,解密再获取用户信息。

建议在小程序调用 wx.login() 获取 code,后端使用 code 换去 openid (如果该小程序绑定了开放平台还可以获取到用户的 unino_id)

好的,现在就是这样用的,wx.login code换sessionKey时候获取OpenID接着获取用户信息然后一起返回数据;