微信小程式填坑之路(四):微信登入獲取openid、unionid
阿新 • • 發佈:2019-01-08
在微信小程式中,因為各種各樣的原因我們會需要獲取到使用者的
openid
或者unionid
下面就簡單來講一下在小程式中如何獲取openid
和unionid
。
步驟一:微信登入獲取登入憑證
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引數,附上他人詳細解密方法(點我)
2、微信開放平臺中,繫結小程式,此時同一開發者賬號下,如果使用者關注過此賬號下的微信公眾號
或者授權登入過此賬號下的微信公眾號
或者移動應用
,則滿足unionid
獲取條件,在步驟二中會返回unionid
,詳細方法點我