本文转自https://www.cnblogs.com/yaoyuqian/p/8203792.html
1. 获取code(登录凭证,用来换取openid及session_key等)
wx.login({
success: function(res){
if(res.code){
that.getNeededUserInfo(res.code);
}else{
console.log('获取用户登录态失败!'+res.errMsg);
}
}
})
2. 获取用户信息(利用wx.login返回的code获取用户的信息)
getNeededUserInfo: function(code){
wx.request({
url: 'https://my.com/login',
method: 'POST',
data: {
code: code // 后端通过这个code去调用微信的接口(https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code),传入参数code、appid、appsecret后获取到微信返回的unionid、openid及session_key等。(然后后端可以直接利用微信返回的信息去关联用户在自己网站的user_id)
},
success: function(res){
// 可以返回前端需要的用户信息(包括unionid、openid、user_id等)
}
})
}
1. 获取code(登录凭证,用来换取openid及session_key等)
wx.login({
success: function(res){
if(res.code){
that.getNeededUserInfo(res.code);
}else{
console.log('获取用户登录态失败!'+res.errMsg);
}
}
})
2. 获取加密数据和加密算法初始向量
旧版本基础库调取wx.getUserInfo()可以直接获取到微信返回的encryptdata等完整数据,基础库更新之后,需要增加withCredentials属性,并将属性值设置为true时才可以获取到除用户基本信息之外的encryptedData以及iv等数据。
需要注意的是:当withCredentials值为true时,要求此前有调用过wx.login且登录态尚未过期。
getEncData: function(){
wx.getUserInfo({
withCredentials: true,
success: function(res){
that.getNeededUserInfo( code, res.encryptedData, res.encryptedData );
}
})
}
3. 获取用户信息(利用wx.login返回的code获取用户的信息)
getNeededUserInfo: function(code, enc, iv){
wx.request({
url: 'https://my.com/login',
method: 'POST',
data: {
code: code,
encryptedData: enc,
iv: iv
},
success: function(res){
// 可以返回前端需要的用户信息(包括unionid、openid、user_id等)
}
})
}