小程序獲取用戶openid

1、wx.login(OBJECT)

   調用接口獲取登錄憑證(code)進而換取用戶登錄態信息,包括用戶的唯一標識(openid) 及本次登錄的 會話密鑰(session_key)。用戶數據的加解密通訊需要依賴會話密鑰完成。

2、code 換取 session_key

​  這是一個 HTTPS 接口,開發者服務器使用登錄憑證 code 獲取 session_key 和 openid。其中 session_key 是對用戶數據進行加密簽名的密鑰。爲了自身應用安全,session_key 不應該在網絡上傳輸。
接口地址:
https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code

詳細的介紹請看小程序APIhttps://mp.weixin.qq.com/debug/wxadoc/dev/api/api-login.html#wxloginobject

3、獲取用戶openid實例

[javascript] view plain copy
  1. //app.js  
  2. App({  
  3.     globalData:{  
  4.         appid:'1wqas2342dasaqwe2323424ac23qwe',//appid需自己提供,此處的appid我隨機編寫  
  5.         secret:'e0dassdadef2424234209bwqqweqw123ccqwa',//secret需自己提供,此處的secret我隨機編寫  
  6.   
  7.     },  
  8.     onLaunch: function () {  
  9.      var that = this  
  10.      var user=wx.getStorageSync('user') || {};    
  11.      var userInfo=wx.getStorageSync('userInfo') || {};   
  12.      if((!user.openid || (user.expires_in || Date.now()) < (Date.now() + 600))&&(!userInfo.nickName)){   
  13.         wx.login({    
  14.         success: function(res){   
  15.             if(res.code) {  
  16.                 wx.getUserInfo({  
  17.                     success: function (res) {  
  18.                         var objz={};  
  19.                         objz.avatarUrl=res.userInfo.avatarUrl;  
  20.                         objz.nickName=res.userInfo.nickName;  
  21.                         //console.log(objz);  
  22.                         wx.setStorageSync('userInfo', objz);//存儲userInfo  
  23.                     }  
  24.                 });  
  25.                 var d=that.globalData;//這裏存儲了appid、secret、token串    
  26.                 var l='https://api.weixin.qq.com/sns/jscode2session?appid='+d.appid+'&secret='+d.secret+'&js_code='+res.code+'&grant_type=authorization_code';    
  27.                 wx.request({    
  28.                     url: l,    
  29.                     data: {},    
  30.                     method: 'GET'// OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT    
  31.                     // header: {}, // 設置請求的 header    
  32.                     success: function(res){   
  33.                         var obj={};  
  34.                         obj.openid=res.data.openid;    
  35.                         obj.expires_in=Date.now()+res.data.expires_in;    
  36.                         //console.log(obj);  
  37.                         wx.setStorageSync('user', obj);//存儲openid    
  38.                     }    
  39.                 });  
  40.             }else {  
  41.                 console.log('獲取用戶登錄態失敗!' + res.errMsg)  
  42.             }            
  43.         }    
  44.       });   
  45.     }   
  46.    },  
  47. }) 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章