Wechat-Group / WxJava

微信开发 Java SDK ,支持包括微信支付,开放平台,小程序,企业微信,视频号,公众号等的后端开发
Apache License 2.0
29.48k stars 8.5k forks source link

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

Closed jiankian closed 1 month ago

jiankian commented 1 month ago

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

简要描述

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

模块版本情况

详细描述

小程序文档用户信息解密有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;

qichhhhh commented 1 month ago

这个接口已经过期了

jiankian commented 1 month ago

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

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

binarywang commented 1 month ago

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

jiankian commented 1 month ago

getUserProfile

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

qichhhhh commented 1 month ago

getUserProfile

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

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

jiankian commented 1 month ago

getUserProfile

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

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

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