小程序,unionid
UnionID机制说明
如果开发者拥有多个移动应用、网站应用、和公众帐号(包括小程序),可通过unionid来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号(包括小程序),用户的unionid是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用,unionid是相同的。总的来说,unionid是唯一的。
UnionID获取途径
1、调用接口wx.getUserInfo,从解密数据中获取UnionID。注意本接口需要用户授权,请开发者妥善处理用户拒绝授权后的情况。
2、如果开发者帐号下存在同主体的公众号,并且该用户已经关注了该公众号。开发者可以直接通过wx.login获取到该用户UnionID,无须用户再次授权。
3、如果开发者帐号下存在同主体的公众号或移动应用,并且该用户已经授权登录过该公众号或移动应用。开发者也可以直接通过wx.login获取到该用户UnionID,无须用户再次授权。
以下是第一种获取途径,话不多说,直接上代码,其中已经包含注释解析:
onLoad: function () {
wx.login({//第一:需要登录
success: function(res){
// 获取session_key和openid的前提条件:1、appid,需要通过微信认证;2、appSecrete;3、登录返回的code
var code = res.code;//code,用于获取session_key和openid
if(code){
//将code发送给服务器,用于换取session_key和openid
var session_key, openid;//假装此处存在session_key和openid,嘿嘿。。。
}
wx.getSetting({//第二:获取用户的当前设置。
success: function(res){
wx.authorize({//第三:在调用需授权 API 之前,提前向用户发起授权请求
scope: 'scope.userInfo',//允许获取用户信息权限
success: function(res){
wx.getUserInfo({//第四:获取用户信息,前面需要先调用wx.login接口,并且需要用户授权,已完成
success:function(res){
//这就是需要进行解密的信息,里面包含敏感数据在内的完整用户信息的加密数据
var encryptedData = res.encryptedData;
//加密算法的初始向量
var iv = res.iv;
// 此时session_key、openid、encryptedData和iv都有了,将这四个数据传给服务器进行解密,获取经过解密之后的信息,其中就包含unionid,如何使用这个unionid,看你自己的了,我一般是缓存起来
}
})
}
})
}
})
}
})
},
- 上一篇 »小程序测试 - 小肥羊要进步
- 下一篇 »微信小程序 生成小程序码