介面調整公告
前段時間,微信釋出《小程式使用者頭像暱稱獲取規則調整公告》稱實踐中發現有部分小程式,在使用者剛開啟小程式時就要求收集使用者的微信暱稱頭像,或者在支付前等不合理路徑上要求授權。
如果使用者拒絕授權,則無法使用小程式或相關功能。在已經獲取使用者的 openId 與 unionId 資訊情況下,使用者的微信暱稱與頭像並不是使用者使用小程式的必要條件。為減少此類不合理的強迫授權情況,小程式 wx.getUserProfile
介面將被收回,wx.getUserInfo
介面獲取使用者暱稱頭像將被收回。
新的替代方案
為了解決這個問題,小程式官方提供了一個頭像暱稱填寫能力。當小程式需要讓使用者完善個人資料時,可以通過微信提供的頭像暱稱填寫能力快速完善。
當你點選頭像的時候可以直接將頭像的臨時地址獲取到,當你點選輸入框的時候,可以獲取到你的微信暱稱,可以將微信暱稱直接填入輸入框。
index.wxml
<button class="avatar" open-type="chooseAvatar" bind:chooseavatar="onChooseAvatar">
<image src="{{avatarUrl}}"></image>
</button>
<input type="nickname" class="weui-input" placeholder="請輸入暱稱"/>
index.js
const defaultAvatarUrl = 'https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0'
Page({
data: {
avatarUrl: defaultAvatarUrl,
},
onChooseAvatar(e) {
const { avatarUrl } = e.detail
this.setData({
avatarUrl,
})
}
})
index.wxss
.avatar{
width: 80px;
height: 80px;
padding:0;
background: none;
}
.avatar image{
width: 80px;
height: 80px;
border-radius: 100px;
}
.weui-input{
width: 90%;
height: 60px;
margin:20px auto;
background: #eee;
border-radius: 5px;
padding-left: 15px;
}
通過這種方法就可以杜絕那些強制授權獲取頭像和暱稱的小程式了。不過這麼閹割這個功能,還是降低了使用者體驗。
這裡要注意的是:獲取到的頭像是臨時地址,不要存進資料庫,臨時地址會失效,準確的做法就是通過wx.uploadFile
這個介面將臨時地址的頭像上傳到你伺服器進行儲存,獲取永久地址。
const defaultAvatarUrl = 'https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0'
Page({
data: {
avatarUrl: defaultAvatarUrl,
},
onChooseAvatar(e) {
const { avatarUrl } = e.detail
this.setData({
avatarUrl,
})
// 將頭像上傳到伺服器
wx.uploadFile({
url: 'https://example.weixin.qq.com/upload',
filePath: tempFilePaths[0],
name: 'file',
success (res){
const data = res.data
//do something
}
})
}
})
Author:TANKING
WeChat:sansure2016
如需深入學習,可以聯絡我!