微信小程序在2021年3月30號對小程序的調整發布了一則公告:小程序登錄、用戶信息相關接口調整說明
總的來說就是原來的wx.getUserInfo接口接近於廢棄,希望我們改用新接口wx.getUserProfile
為什么說接近於廢棄呢,因為返回的數據結構沒有任何變化,但是里面的數據已經沒有任何意義了
wx.login({ success: (res) => { console.log(res) wx.getUserInfo({ success: (res) => { console.log(JSON.stringify(res)) }, }) }, })
打印結果
{ errMsg: "login:ok", code: "061vm11w3k6L9W273N0w3ty6aq0vm11N" } { "errMsg": "getUserInfo:ok", "rawData": "{\"nickName\":\"微信用戶\",\"gender\":0,\"language\":\"\",\"city\":\"\",\"province\":\"\",\"country\":\"\",\"avatarUrl\":\"https://thirdwx.qlogo.cn/mmopen/vi_32/POgEwh4mIHO4nibH0KlMECNjjGxQUq24ZEaGT4poC6icRiccVGKSyXwibcPq4BWmiaIGuG1icwxaQX6grC9VemZoJ8rg/132\"}", "userInfo": { "nickName": "微信用戶", "gender": 0, "language": "", "city": "", "province": "", "country": "", "avatarUrl": "https://thirdwx.qlogo.cn/mmopen/vi_32/POgEwh4mIHO4nibH0KlMECNjjGxQUq24ZEaGT4poC6icRiccVGKSyXwibcPq4BWmiaIGuG1icwxaQX6grC9VemZoJ8rg/132" }, "signature": "4d3f449f152df32d8013ca167f6a9d9bac3f5669", "encryptedData": "VFmQZFcrNTpaOxsV46htOLZlLxp+8d8qO8uXp9jjjHhLkhrrlyjUIILGrDJywZh1fXNL3E2vUTp1UTHs2HbYf2CDPpzI6cynj6C+YzYkLYqTMYCmOewVEoz3E3h3hehfwXmraIg0G+dvyAPoxz6jBTPsyr49imgwWMHc8EgrUqkc3d2q90rlsz/QOhQSpMVNhDJ4hONEqiqHHNDuFbClb2S1pSIA1MpDi9YQQhfOSBldK0I/B7hdEFHuDJdtKutOddlAdhcuf/JGqNG35K8O9yTdVkdXTNS/L4HS8jAZHQVhlEaWChp/mg/7Sl+w+0YOJnGIHQff6U84vw1lFxs1qITO7bUbaNFz0w0L7C3iJwvPQjINF4sYm8p95+HHzeHE8QyHcOhR4XZhj7/GwwqqBSuq5+YUPJoVau8o4t5xrYTRFUAFjgRt/eofKesX3TYpgNHC8+z2+XAxSg6A3hRSb0MEbvxbgRMA2igsZre2EYYayYtPR588imkolfgvdO97lEh78F9jpNwM2oula995pA==", "iv": "gx1Jotzr+azhcIgQ+3yFqA==" }
可以看到返回的信息是不包含用戶昵稱等信息的;頭像是一個面向所有用戶的默認頭像
我們對encryptedData進行解密得到結果如下
//通過jscode2session接口用code換取session_key
Array
( [session_key] => DoVkwxtLSaNI+dUxtBJ35g== [openid] => o-UKg4vLVl4Cpa5TZAEFeUp_j-bg [unionid] => oduLh1PZ1D94qW5LywAXfRpY1OMw )
//通過session_key,iv對加密字符串encryptedData解密
Array ( [openId] => o-UKg4vLVl4Cpa5TZAEFeUp_j-bg [nickName] => 微信用戶 [gender] => 0 [language] => [city] => [province] => [country] => [avatarUrl] => https://thirdwx.qlogo.cn/mmopen/vi_32/POgEwh4mIHO4nibH0KlMECNjjGxQUq24ZEaGT4poC6icRiccVGKSyXwibcPq4BWmiaIGuG1icwxaQX6grC9VemZoJ8rg/132 [unionId] => oduLh1PZ1D94qW5LywAXfRpY1OMw [watermark] => Array ( [timestamp] => 1617767507 [appid] => wxb9d02 ) )
解密效果只是多了包含用戶的openid和unionId,用戶的其他信息 我們依然獲取不到
下面改用新街口調試
<button wx:if="{{canIUseGetUserProfile}}" bindtap="getlogin"> 獲取頭像昵稱 </button> getlogin(){ wx.getUserProfile({ desc: '展示用戶信息', // 聲明獲取用戶個人信息后的用途,后續會展示在彈窗中,請謹慎填寫 success: (res) => { console.log(res) wx.login({//必須先獲取信息后再調用login,再login里調用信息接口調用不了 complete: (res) => { console.log(res) }, }) } }) },
打印結果如下
{ "errMsg": "getUserProfile:ok", "rawData": "{\"nickName\":\"AAA\",\"gender\":1,\"language\":\"zh_CN\",\"city\":\"Xuzhou\",\"province\":\"Jiangsu\",\"country\":\"China\",\"avatarUrl\":\"https://thirdwx.qlogo.cn/mmopen/vi_32/Q0j2222xyQamU3pbDq0epMoiaj83F7LoTT40CMAcT5OUAeQdKb2lAJ4hqudggWJ9Wd05plQbw/132\"}", "userInfo": { "nickName": "AAA", "gender": 1, "language": "zh_CN", "city": "Xuzhou", "province": "Jiangsu", "country": "China", "avatarUrl": "https://thirdwx.qlogo.cn/mmopen/vi_32/Q0j4TwGTfTLNiclWk0jG0jxyQamU3pbDq0epMoiaj83F7LoTT40CMAcTWd05plQbw/132" }, "signature": "4f729de60e07afec005af561697046a7fb0ad6df", "encryptedData": "gpAbYEOQZCtlbeOioHmG7ZIKMe5GmIwfsZIY17u9jYlc46SBc+xXJkeiuYF5KGfEaCPxEfYWB/wDUHSK89dL4svzEOAGZqGomrFZWbmPvVxYBY7lVBnRlgXJZNDqoYSODHV4zHZHSIVBNzG4w2+eyIn3eE4cLYHAk+/nlrWezRAaoYPUUFLgBYGDoyWoJ50ys3K6k9Kzx9H4WkTnvXWx1lBf6gPrIG4MfU54WB9EdnkxTzPw3e4/nfnsdU6Ro2/D/Z/wG4fKOyWUO6j54x7Yfmqn3wVnYeccBqThwxvCtwS6WablYn2JowEN9U7zlugbjVHN3x9B3lfUFwgr3fYJZG20cC0xST5wWH505YZhqZEZ/VCkUYVvzFYAyE2bn/bo0T0sOW7qbByG49hNRVmZach71s9+2yz481hyvjEoji5q8qQvdj1gAiNG/RWMFjIJ", "iv": "PIPIgoaGVXBCaUPnmcUr4A==" } { errMsg: "login:ok", code: "091BP00000q0uL1Ky50008IsGk3BP00l" }
對數據進行解密:
Array ( [session_key] => YaDB4+kxgCOPjQEd0kmuYg== [openid] => o-UKg4vL2p_j-bg [unionid] => oduLh2pY1OMw ) Array ( [nickName] => AAA [gender] => 1 [language] => zh_CN [city] => Xuzhou [province] => Jiangsu [country] => China [avatarUrl] => https://thirdwx.qlogo.cn/mmopen/vi_32/Q0j4TwGTfTLNi2Qbw/132 [watermark] => Array ( [timestamp] => 1617769042 [appid] => wxb92 ) )
就這樣吧;前端需要進行更改接口調用;因為新接口每次都會有彈窗提示,所以這塊邏輯也要修改一下