现在不调用 wx.getUserInfo接口如何获取unionid
发布于 6 年前 作者 guiyingzhao 16006 次浏览 来自 问答

之前是通过将 wx.login  wx.getUserInfo 绑定使用解密获取用户unionid,现在怎么获取用户的unionid呢?

看了下最新的文档,现在是满足下面条件wx.login是会直接返回unionid的,如果不满足要怎么获取呢?

1.在微信开放平台下存在同主体的App、公众号、小程序。

2.用户关注了某个相同主体公众号,或曾经在某个相同主体App、公众号上进行过微信登录授权。


8 回复

现在必须用按钮触发授权,不然拿不到用户信息,在第一次需要获取用户信息的时候加个事件触发,让用户操作授权。

已解决,不知道靠不靠谱贴上代码。 button 组件授权后在调用wx.login 进行解密

userInfoHandler: function (e) {

let that = this;

if (e.detail.errMsg ==‘getUserInfo:ok’) {

wx.login({

success: function ® {

let code = r.code;

if (code) {

// 解密用户数据

wx.request({

url: url,

method: ‘post’,

header: {‘content-type’: ‘application/x-www-form-urlencoded’},

data: {encryptedData: e.detail.encryptedData, iv: e.detail.iv, code: code},

success: function (data) {

console.log(data);

if (data.data.status == 1) {

app.globalData.userInfo = data.data.userInfo;

wx.setStorageSync(‘userInfo’, data.data.userInfo); // 缓存用户信息

typeof cb == “function” && cb(app.globalData.userInfo);

app.navigateBack(‘navigateTo’, ‘/pages/index/index’);

} else {

// 失败

that.showMsg(data.data.msg);

}

},

fail: function (err) {

that.showMsg(err.errMsg);

console.log(err)

}

})

} else {

that.showMsg(err.errMsg);

console.log(‘获取用户登录态失败!’, err)

}

},

fail: function (err) {

that.showMsg(err.errMsg);

console.log(‘登陆失败’, err);

}

})

}

}

用户体现太差了,用户一进来等于要询问两次他授权登录

发现微信乱七八糟的,这个解密,然后看文档说不推荐用这个 encryptedData了 

用这个 有时候解密不出来,有时候解密出来 的数据 unionid的字段名称有时候叫  unionid 有时候叫  unionId

微信这块设计 太low

在个人界面增加一个授权按钮

我们都好多天

回到顶部