微信小程序調整登錄、用戶信息相關接口得到(dào)的(de)坑 - 新聞資訊 - 雲南小程序開發|雲南軟件開發|雲南網站建設-昆明融晨信息技術有限公司

159-8711-8523

雲南網建設/小程序開發/軟件開發

知識

不(bù)管是(shì)網站,軟件還是(shì)小程序,都要(yào / yāo)直接或間接能爲(wéi / wèi)您産生價值,我們在(zài)追求其視覺表現的(de)同時(shí),更側重于(yú)功能的(de)便捷,營銷的(de)便利,運營的(de)高效,讓網站成爲(wéi / wèi)營銷工具,讓軟件能切實提升企業内部管理水平和(hé / huò)效率。優秀的(de)程序爲(wéi / wèi)後期升級提供便捷的(de)支持!

您當前位置>首頁 » 新聞資訊 » 小程序相關 >

微信小程序調整登錄、用戶信息相關接口得到(dào)的(de)坑

發表時(shí)間:2021-4-13

發布人(rén):融晨科技

浏覽次數:129

前提是(shì)這(zhè)樣的(de):

爲(wéi / wèi)讓程序員更好的(de)加班,平台将進行以(yǐ)下調整:

  1. 2021年2月23日起,若小程序已在(zài)微信開放平台進行綁定,則通過 wx.login 接口獲取的(de)登錄憑證可直接換取unionID
  2. 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):

以(yǐ)前: 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)特别注意

相關案例查看更多