微信小程序調整登錄、用戶信息相關接口得到(dào)的(de)坑
發表時(shí)間:2021-4-13
發布人(rén):融晨科技
浏覽次數:129
前提是(shì)這(zhè)樣的(de):
爲(wéi / wèi)讓程序員更好的(de)加班,平台将進行以(yǐ)下調整:
- 2021年2月23日起,若小程序已在(zài)微信開放平台進行綁定,則通過
wx.login
接口獲取的(de)登錄憑證可直接換取unionID - 2021年4月13日後發布的(de)小程序新版本,無法通過
wx.getUserInfo
與<button open-type="getUserInfo"/>
獲取用戶個(gè)人(rén)信息(頭像、昵稱、性别與地(dì / de)區),将直接獲取匿名數據(包括userInfo
與encryptedData
中的(de)用戶個(gè)人(rén)信息),獲取加密後的(de)openID
與unionID
數據的(de)能力不(bù)做調整。此前發布的(de)小程序版本不(bù)受影響,但如果要(yào / yāo)進行版本更新則需要(yào / yāo)進行适配。
…
坑是(shì)這(zhè)樣的(de):
wx.getUserInfo
與 <button open-type="getUserInfo"/>
除了(le/liǎo)可以(yǐ)獲取到(dào)用戶的(de)頭像昵稱, 還可以(yǐ)獲取到(dào) encryptedData
和(hé / huò) iv
這(zhè)兩個(gè)是(shì)用來(lái)解析 openID 、 unionID 的(de)
拿我們的(de)項目來(lái)說(shuō), 通過 getUserInfo
基本一套就(jiù)可以(yǐ)帶走用戶昵稱頭像及 openID 、 unionID
現在(zài): wx.getUserProfile
雖然也(yě)可以(yǐ)獲取到(dào)encryptedData和(hé / huò)iv, 但是(shì)從這(zhè)裏是(shì)解析不(bù)出(chū)來(lái) openID 、 unionID 的(de)
也(yě)就(jiù)是(shì)說(shuō), 指望一鍵更換的(de)小夥伴們想多了(le/liǎo), 如果你原來(lái)的(de)邏輯是(shì)直接往後端傳入 encryptedData
和(hé / huò) iv
然後獲取 openID 、 unionID 是(shì)行不(bù)通的(de).
所以(yǐ)怎麽拿呢? 還得調用一遍 wx.getUserInfo
…
和(hé / huò)諧而(ér)親切的(de)官方并沒有告訴你 wx.getUserProfile
是(shì)拿不(bù)到(dào)這(zhè)倆唯一ID的(de), 不(bù)過他(tā)們還是(shì)細心而(ér)體貼的(de)給 wx.getUserProfile
放進去了(le/liǎo) encryptedData
和(hé / huò) iv
….
現有解決方案(抛磚引玉), 如果不(bù)想大(dà)改的(de)情況下:
後端在(zài)原有接受 encryptedData
和(hé / huò) iv
的(de)基礎上(shàng)再增加 userInfo
的(de)參數
然後小程序傳參的(de)時(shí)候是(shì)這(zhè)樣:
wx.getUserProfile({
desc: '用于(yú)完善會員資料',
success: (res) => {
let userInfo = res.userInfo;
wx.getUserInfo({
success: (res) => {
let wxUserInfo = res;
API.wechatRegister({
userInfo: userInfo, // 用于(yú)獲取userInfo
encryptedData: wxUserInfo.encryptedData, // 用于(yú)解密openID、unionID
iv: wxUserInfo.iv,// 用于(yú)解密openID、unionID
})
}
})
}
});
另外, 需要(yào / yāo)注意的(de)是(shì)
wx.getUserProfile
在(zài) 2.16.0之(zhī)前的(de)版本是(shì)沒有encryptedData和(hé / huò)iv的(de) , 這(zhè)個(gè)需要(yào / yāo)特别注意