天天看點

微信小程式getUserProfile适配方案

清明節放假前一天 群裡突然炸鍋,說小程式所有用的昵稱全部變成了微信昵稱

當時我就

微信小程式getUserProfile适配方案

特麼不是說好13号嗎???

吓得我趕緊爬起來翻文檔(需要代碼直接往後翻)

wx.getUserProfile(Object object)

基礎庫 2.10.4 開始支援,低版本需做相容處理。

擷取使用者資訊。每次請求都會彈出授權視窗,使用者同意後傳回 userInfo。

getUserInfo擷取使用者資訊,預計自2021年4月13日起,getUserInfo将不再彈出彈窗,并直接傳回匿名的使用者個人資訊 即wx.getUserInfo接口的傳回參數不變,但開發者擷取的userInfo為匿名資訊。
微信小程式getUserProfile适配方案
微信小程式getUserProfile适配方案

為優化使用者的使用體驗,平台将進行以下調整:

2021年2月23日起,若小程式已在微信開放平台進行綁定,則通過wx.login接口擷取的登入憑證可直接換取unionID

2021年4月13日後釋出的小程式新版本,無法通過wx.getUserInfo與擷取使用者個人資訊(頭像、昵稱、性别與地區),将直接擷取匿名資料(包括userInfo與encryptedData中的使用者個人資訊),擷取加密後的openID與unionID資料的能力不做調整。此前釋出的小程式版本不受影響,但如果要進行版本更新則需要進行适配。

新增getUserProfile接口(基礎庫2.10.4版本開始支援),可擷取使用者頭像、昵稱、性别及地區資訊,開發者每次通過該接口擷取使用者個人資訊均需使用者确認。具體接口文檔:《getUserProfile接口文檔》

由于getUserProfile接口從2.10.4版本基礎庫開始支援(覆寫微信7.0.9以上版本),考慮到開發者在低版本中有擷取使用者頭像昵稱的訴求,對于未支援getUserProfile的情況下,開發者可繼續使用getUserInfo能力。開發者可參考getUserProfile接口文檔中的示例代碼進行适配。

請使用了wx.getUserInfo接口或的開發者盡快适配。開發者工具1.05.2103022版本開始支援getUserProfile接口調試,開發者可下載下傳該版本進行改造。

原因就像微信所說的

很多開發者在打開小程式時就通過元件方式喚起getUserInfo彈窗,如果使用者點選拒絕,無法使用小程式,這種做法打斷了使用者正常使用小程式的流程,同時也不利于小程式擷取新使用者。

這裡我會給出Uni-app的适配代碼,各位同學舉一反三(4.13号之前釋出的正式包暫不影響)

html

<button v-if="canUseGetUserProfile" hover-class="none" @tap="getUserProfile">微信登入</button>
<button v-else hover-class="none" open-type="getUserInfo" @getuserinfo="setUserInfo">微信登入</button>

           

data

canUseGetUserProfile: false
           

js

onLoad() {
    //判斷是否存在getUserProfile方法
    if (uni.getUserProfile) {
      this.setData({
        canUseGetUserProfile: true
      })
    }
},

//小程式授權api替換 getUserInfo 替換
 getUserProfile() {
    // 推薦使用wx.getUserProfile擷取使用者資訊,開發者每次通過該接口擷取使用者個人資訊均需使用者确認
    // 開發者妥善保管使用者快速填寫的頭像昵稱,避免重複彈窗
    uni.getUserProfile({
      desc: \'用于完善會員資料\', // 聲明擷取使用者個人資訊後的用途,後續會展示在彈窗中,請謹慎填寫
      success: (res) => {
        //業務邏輯
      }
    })
  },
           

這裡要注意

desc

為必填項,并且将來有可能會将資訊提示在彈窗内,是以要謹慎填寫;

getUserProfile

API不是通過

open-type

吊起 而是使用

@tap="getUserProfile"

bindtap="getUserProfile"

調用的

且必須為直接調用,不能通過其他函數回調調用

否則會報

getUserProfile:fail can only be invoked by user TAP gesture.

錯誤

如果你要問我看法

就像微信開發文檔裡的評論一樣 人事不幹一點 那麼多bug不修

微信小程式getUserProfile适配方案

有用的話麻煩點個贊啦 3Q

了解更多請關注 伴少年 麼麼哒