微信小程序getUserProfile適配方案


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

當時我就

1 (14).jpg

特么不是說好13號嗎???

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

wx.getUserProfile(Object object)

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

獲取用戶信息。每次請求都會彈出授權窗口,用戶同意后返回 userInfo。

getUserInfo獲取用戶信息,預計自2021年4月13日起,getUserInfo將不再彈出彈窗,並直接返回匿名的用戶個人信息 即wx.getUserInfo接口的返回參數不變,但開發者獲取的userInfo為匿名信息。

image.png

image.png

為優化用戶的使用體驗,平台將進行以下調整:
2021年2月23日起,若小程序已在微信開放平台進行綁定,則通過wx.login接口獲取的登錄憑證可直接換取unionID
2021年4月13日后發布的小程序新版本,無法通過wx.getUserInfo與

原因就像微信所說的

很多開發者在打開小程序時就通過組件方式喚起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為必填項,並且將來有可能會將信息提示在彈窗內,所以要謹慎填寫;
getUserProfileAPI不是通過open-type 吊起 而是使用 @tap="getUserProfile"bindtap="getUserProfile" 調用的

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

否則會報getUserProfile:fail can only be invoked by user TAP gesture.錯誤

如果你要問我看法

就像微信開發文檔里的評論一樣 人事不干一點 那么多bug不修

image.png

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

了解更多請關注 伴少年 么么噠


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM