還以為編輯器又出問題了 重新打開好幾次 ,發現 微信api 有調整...... 下邊兒是微信官方的講解。。。
為優化用戶的使用體驗,平臺將進行以下調整:
- 2021年2月23日起,若小程序已在微信開放平臺進行綁定,則通過wx.login接口獲取的登錄憑證可直接換取unionID
- 2021年4月13日后發布的小程序新版本,無法通過wx.getUserInfo與<button open-type="getUserInfo"/>獲取用戶個人信息(頭像、昵稱、性別與地區),將直接獲取匿名數據(包括userInfo與encryptedData中的用戶個人信息),獲取加密后的openID與unionID數據的能力不做調整。此前發布的小程序版本不受影響,但如果要進行版本更新則需要進行適配。
- 新增getUserProfile接口(基礎庫2.10.4版本開始支持),可獲取用戶頭像、昵稱、性別及地區信息,開發者每次通過該接口獲取用戶個人信息均需用戶確認。具體接口文檔:《getUserProfile接口文檔》
- 由于getUserProfile接口從2.10.4版本基礎庫開始支持(覆蓋微信7.0.9以上版本),考慮到開發者在低版本中有獲取用戶頭像昵稱的訴求,對于未支持getUserProfile的情況下,開發者可繼續使用getUserInfo能力。開發者可參考getUserProfile接口文檔中的示例代碼進行適配。
請使用了wx.getUserInfo接口或<button open-type="getUserInfo"/>的開發者盡快適配。開發者工具1.05.2103022版本開始支持getUserProfile接口調試,開發者可下載該版本進行改造。
小游戲不受本次調整影響。
一、調整背景
很多開發者在打開小程序時就通過組件方式喚起getUserInfo彈窗,如果用戶點擊拒絕,無法使用小程序,這種做法打斷了用戶正常使用小程序的流程,同時也不利于小程序獲取新用戶。
二、調整說明
通過wx.login接口獲取的登錄憑證可直接換取unionID
若小程序已在微信開放平臺進行綁定,原wx.login接口獲取的登錄憑證若需換取unionID需滿足以下條件:
如果開發者帳號下存在同主體的公眾號,并且該用戶已經關注了該公眾號
如果開發者帳號下存在同主體的公眾號或移動應用,并且該用戶已經授權登錄過該公眾號或移動應用
2月23日后,開發者調用wx.login獲取的登錄憑證可以直接換取unionID,無需滿足以上條件。
回收wx.getUserInfo接口可獲取用戶個人信息能力
4月13日后發布的新版本小程序,開發者調用wx.getUserInfo或<button open-type="getUserInfo"/>將不再彈出彈窗,直接返回匿名的用戶個人信息,獲取加密后的openID、unionID數據的能力不做調整。
此外,針對scope.userInfo將做如下調整:
- 若開發者調用wx.authorize接口請求scope.userInfo授權,用戶側不會觸發授權彈框,直接返回授權成功
- 若開發者調用wx.getSetting接口請求用戶的授權狀態,會直接讀取到scope.userInfo為true
新增getUserProfile接口
若開發者需要獲取用戶的個人信息(頭像、昵稱、性別與地區),可以通過wx.getUserProfile接口進行獲取,該接口從基礎庫2.10.4版本開始支持,該接口只返回用戶個人信息,不包含用戶身份標識符。該接口中desc屬性(聲明獲取用戶個人信息后的用途)后續會展示在彈窗中,請開發者謹慎填寫。開發者每次通過該接口獲取用戶個人信息均需用戶確認,請開發者妥善保管用戶快速填寫的頭像昵稱,避免重復彈窗。
插件用戶信息功能頁
插件申請獲取用戶頭像昵稱與用戶身份標識符仍保留功能頁的形式,不作調整。用戶在用戶信息功能頁中授權之后,插件就可以直接調用 wx.login 和 wx.getUserInfo 。
三、最佳實踐
調整后,開發者如需獲取用戶身份標識符只需要調用wx.login接口即可。
開發者若需要在界面中展示用戶的頭像昵稱信息,可以通過<open-data>組件進行渲染,該組件無需用戶確認,可以在界面中直接展示。
在部分場景(如社交類小程序)中,開發者需要在獲取用戶的頭像昵稱信息,可調用wx.getUserProfile接口,開發者每次通過該接口均需用戶確認,請開發者妥善處理調用接口的時機,避免過度彈出彈窗騷擾用戶。