现在不调用 wx.getUserInfo接口如何获取unionid

发布于 7 年前作者 guiyingzhao16134 次浏览最后编辑 7 年前来自 ask

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

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

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

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


8 回复
xiulan38
xiulan381 楼6 年前

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

guiyingcao
guiyingcao2 楼6 年前

已解决,不知道靠不靠谱贴上代码。 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);

}

})

}

}

yangyao
yangyao3 楼6 年前
wpeng
wpeng4 楼6 年前
xiayi
xiayi5 楼6 年前

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

sqiao
sqiao6 楼6 年前

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

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

微信这块设计 太low

bwei
bwei7 楼6 年前

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

nhan
nhan8 楼5 年前

我们都好多天