1 1. 獲取code(登陸憑證,用來換取openid及session_key等) 2 wx.login({ 3 success: function(res){ 4 if(res.code){ 5 that.getNeededUserInfo(res.code); 6 }else{ 7 console.log('獲取用戶登陸態失敗!'+res.errMsg); 8 } 9 } 10 }) 11 12 2. 獲取用戶信息(利用wx.login返回的code獲取用戶的信息) 13 getNeededUserInfo: function(code){ 14 wx.request({ 15 url: 'https://my.com/login', 16 method: 'POST', 17 data: { 18 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) 19 }, 20 success: function(res){ 21 // 能夠返回前端須要的用戶信息(包括unionid、openid、user_id等) 22 } 23 }) 24 }
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等) } }) }