OpenID说明
为了识别用户,每个用户针对每个公众号或小程序等应用会产生一个安全的OpenID,这个OpenID对不同的小程序,微信公众号都是不同的,即同一个用户在不同的小程序,微信公众号对应生成的OpenID是不同的。
UnionID说明
如果开发者拥有多个移动应用、网站应用、和公众帐号(包括小程序),可通过 UnionID 来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号(包括小程序),用户的 UnionID 是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用,UnionID是相同的。
对比举例说明
微信开发平台账号下李四有一个公众号A和小程序B
张三访问公众号A会生成一个唯一的openidA,访问小程序B会生成一个唯一的openidB
如果我们现在要确定公众号A的用户张三与小程序B的用户张三是否为同一个用户张三,我们需要用户的unionid来解决这个问题,即unionid是用来确定不同应用下用户的唯一性。
OpenID与UnionID的获取
1.使用wx.login() 获取登录凭证(code)
wx.login({
//成功放回
success:(res)=>{
console.log(res);
let code=res.code
}
})
2.拿着code+code2Session通过wx.request 来让code换取openid以及unionid
wx.request({
url: `https://api.weixin.qq.com/sns/jscode2session?appid=${你的AppID}&secret=1f9465bdebe244b5ad15635e8a655832&js_code=${获取到的code}&grant_type=authorization_code`,
success:(res)=>{
console.log(res);//数据如下所示
userInfo.openid=res.data.openid
userInfo.unionid=res.data.unionid
//获取到你的openid
console.log(userInfo.openid);
}
})
//得到的数据
/*{
"openid":"xxxxxx",
"session_key":"xxxxx",
"unionid":"xxxxx",
"errcode":0,
"errmsg":"xxxxx"
}*/