unionid与openid的不同之处在于:
openid是同一用户同一应用唯一;而unionid是同一用户不同应用唯一。
很显然,如果要拿到用户的唯一id,只能用unionid。
因为unionid是用户的私密信息,所以需要走登录入口。
uni-app框架对这块做了很好的封装,直接调用即可。不过api有点乱,手册介绍的实例是用云函数的方式获取,但云函数的相关配置比较繁琐,我们可以绕过不用。
uni.login({
provider: 'weixin',
success: loginRes => {
console.log('code>>>', loginRes.code);
//获取unionid信息
uni.request({
url: 'https://api.weixin.qq.com/sns/jscode2session',
data: {
appid: 'xxxxxxx',
secret: 'xxxxxxx',
js_code: loginRes.code,
grant_type: 'authorization_code'
},
header: {
'content-type': 'json'
},
success: unionRes => {
if (unionRes.data && unionRes.data.unionid) {
let unionid = unionRes.data.unionid;
uni.setStorageSync('wx_userid', unionid);//将unionid存储下来,下次可以免登
// 获取用户信息,包括头像昵称等
uni.getUserInfo({
provider: 'weixin',
success: infoRes => {
console.log('用户信息>>>', infoRes);
}
});
}
}
});
}
});
网友评论