1. 程式人生 > >微信小程式填坑之路(四):微信登入獲取openid、unionid

微信小程式填坑之路(四):微信登入獲取openid、unionid

在微信小程式中,因為各種各樣的原因我們會需要獲取到使用者的openid或者unionid下面就簡單來講一下在小程式中如何獲取openidunionid

步驟一:微信登入獲取登入憑證

wx.login({
  success: res => {
    // 微信臨時登入憑證
    let _code = res.code;
    // 進行網路訪問,將 _code 提交給服務端,服務端返回 openid 和 unionid,
    // 服務端對 _code 的處理機制參照 步驟二
    ......
  },
  fail: res => {
    toast.
show({ content: '微信登入失敗' }); } }); 呼叫微信小程式的 wx.login()可以獲取到微信登入的臨時憑證,此憑證將用於下面獲取 openid 以及 unionid

步驟二:將獲取的登入憑證提交後臺,獲取 openid 與 unionid

如何使用登入憑證(注意:下方程式碼僅用於講解憑證使用方法以及在除錯中快捷獲取 openid 以及unionid,不可在正式開發中使用)

wx.request({
  // 通過此 url ,獲取 openid 與 unionid
  url: 'https://api.weixin.qq.com/sns/jscode2session'
, data: { // 小程式的appid 'appid': appId, // 小程式的secret 'secret': appSecret, // wx.login()返回的登入憑證 'js_code': jscode, // 固定值,不需要改變 'grant_type': 'authorization_code' }, success: res => { // 返回的 openid console.log(res.data.openid); // 返回的會話金鑰
console.log(res.data.session_key); // 注意:上面兩個欄位值必定會返回,unionid 則只會在滿足一定條件下返回,不是必定會返回的值 console.log(res.data.unionid); } }); 注意!注意!注意!===> 1、上方程式碼,僅僅用於講述如何通過登入憑證獲取 openid 和 unionid 以及在除錯中如何快速獲取 openid 和unionid, 並不能在正式開發中在客戶端使用,微信不支援正式的線上產品訪問 'https://api.weixin.qq.com/sns/jscode2session' !!! 2、在正式開發中,必須將獲取的登入憑證(js_code)提交給服務端,由服務端訪問 'https://api.weixin.qq.com/sns/jscode2session' 獲取 openid 和 unionid,在返回給客戶端

unionid的獲取

上述已經說明,openid是必定能得到的值,unionid則需要滿足一定條件才會返回,下面就講述一下unionid的幾種獲取條件!

1、呼叫介面wx.getUserInfo介面,從返回的加密資料 encryptedData中獲取unionid,此方法仍然需要將登入憑證傳遞給服務端,服務端通過上述方法獲取session_key,幫助客戶端解密加密資料,詳細方法點我

注意:如果你的小程式沒有繫結微信開放平臺,解密的資料中不包含unionid引數,附上他人詳細解密方法(點我)
wx.getUserInfo的返回資料
2、微信開放平臺中,繫結小程式,此時同一開發者賬號下,如果使用者關注過此賬號下的微信公眾號或者授權登入過此賬號下的微信公眾號或者移動應用,則滿足unionid獲取條件,在步驟二中會返回unionid詳細方法點我
小程式繫結
這裡寫圖片描述