微信小程序授權(quán)登錄的最新實(shí)現(xiàn)方案詳解(2023年)
微信授權(quán)登錄
我們的項(xiàng)目開(kāi)發(fā)有時(shí)候用到用戶的一些信息,比如頭像,昵稱等。目前小程序?yàn)槲覀兲峁┖昧?code>wx.getUserProfile方法以供獲取用戶信息,它的使用非常簡(jiǎn)單。
wx.getUserProfile方法獲取用戶信息
不推薦使用 wx.getUserInfo 獲取用戶信息,自2021年4月13日起,getUserInfo將不再?gòu)棾鰪棿埃⒅苯臃祷啬涿挠脩魝€(gè)人信息

推薦使用 wx.getUserProfile 獲取用戶信息,開(kāi)發(fā)者每次通過(guò)該接口獲取用戶個(gè)人信息均需用戶確認(rèn)。
對(duì)應(yīng)的官方文檔:https://developers.weixin.qq.com/miniprogram/dev/api/open-api/user-info/wx.getUserProfile.html

簡(jiǎn)單示例代碼:
官網(wǎng)的示例代碼寫(xiě)得較為復(fù)雜,這里我寫(xiě)了一些簡(jiǎn)單的代碼,以便學(xué)習(xí)。
<!-- userInfo如果為空證明沒(méi)有登錄 -->
<button wx-if="{{!userInfo}}" bindtap="login">獲取頭像昵稱</button>
<view wx:else class="userInfo">
<image src="{{userInfo.avatarUrl}}"></image>
<text>{{userInfo.nickName}}</text>
</view>
.userInfo{
display: flex;
flex-direction: column;
align-items: center;
}
.userInfo image{
width: 200rpx;
height: 200rpx;
border-radius: 200rpx;
}
Page({
data: {
userInfo: '', //用于存放獲取的用戶信息
},
login() {
wx.getUserProfile({
desc: '必須授權(quán)才能繼續(xù)使用', // 必填 聲明獲取用戶個(gè)人信息后的用途,后續(xù)會(huì)展示在彈窗中
success:(res)=> {
console.log('授權(quán)成功', res);
this.setData({
userInfo:res.userInfo
})
},
fail:(err)=> {
console.log('授權(quán)失敗', err);
}
})
}
})



退出登錄
由于上面用的判斷是否登錄,是用userInfo是否為空判斷的,所以我們退出登錄只要把userInfo清空就行了,就是這么簡(jiǎn)單粗暴!



與本地緩存wx.setStorageSync結(jié)合使用
如果沒(méi)有本地緩存,每次打開(kāi)小程序都需要再授權(quán)一次,太麻煩了,而且本地緩存中的數(shù)據(jù)其他頁(yè)面也能使用,不用重復(fù)獲取。
完整代碼:
<!-- userInfo如果為空證明沒(méi)有登錄 -->
<button wx-if="{{!userInfo}}" bindtap="login">獲取頭像昵稱</button>
<view wx:else class="userInfo">
<image src="{{userInfo.avatarUrl}}"></image>
<text>{{userInfo.nickName}}</text>
<button type="warn" bindtap="loginOut">退出登錄</button>
</view>
Page({
data: {
userInfo: '', //用于存放獲取的用戶信息
},
onLoad(){
let user = wx.getStorageSync('user')
this.setData({
userInfo: user
})
},
// 授權(quán)登錄
login() {
wx.getUserProfile({
desc: '必須授權(quán)才能繼續(xù)使用', // 必填 聲明獲取用戶個(gè)人信息后的用途,后續(xù)會(huì)展示在彈窗中
success:(res)=> {
console.log('授權(quán)成功', res);
wx.setStorageSync('user',res.userInfo)
this.setData({
userInfo:res.userInfo
})
},
fail:(err)=> {
console.log('授權(quán)失敗', err);
}
})
},
// 退出登錄
loginOut(){
this.setData({
userInfo:''
})
// 清空緩存
wx.setStorageSync('user',null)
}
})
總結(jié)
wx.getUserProfile用于授權(quán)登錄,獲取用戶信息,但它返回的加密數(shù)據(jù)中不包含 openId 和 unionId 字段,只包含頭像昵稱,所以需要其他信息的需要結(jié)合云開(kāi)發(fā)云函數(shù)使用
補(bǔ)充:wx.getUserProfile已被回收
wx真的是說(shuō)改就改,之前就已經(jīng)改過(guò)好幾次了

調(diào)整原因:

獲取用戶頭像昵稱,可以使用「頭像昵稱填寫(xiě)能力」(基礎(chǔ)庫(kù) 2.21.2 版本開(kāi)始支持,覆蓋iOS與安卓微信 8.0.16 以上版本)
到此這篇關(guān)于微信小程序授權(quán)登錄的最新實(shí)現(xiàn)方案的文章就介紹到這了,更多相關(guān)微信小程序授權(quán)登錄內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于JavaScript的gzip靜態(tài)壓縮方法
關(guān)于JavaScript的gzip靜態(tài)壓縮方法...2007-01-01
基于javascript實(shí)現(xiàn)的搜索時(shí)自動(dòng)提示功能
這篇文章主要介紹了基于javascript實(shí)現(xiàn)的搜索時(shí)自動(dòng)提示功能,非常實(shí)用,推薦給需要的小伙伴參考下。2014-12-12
uniapp微信小程序底部動(dòng)態(tài)tabBar的解決方案(自定義tabBar導(dǎo)航)
tabBar如果應(yīng)用是一個(gè)多tab應(yīng)用,可以通過(guò)tabBar配置項(xiàng)指定tab欄的表現(xiàn),以及tab切換時(shí)顯示的對(duì)應(yīng)頁(yè),下面這篇文章主要給大家介紹了關(guān)于uniapp微信小程序底部動(dòng)態(tài)tabBar的解決方案,需要的朋友可以參考下2022-04-04
js實(shí)現(xiàn)前面自動(dòng)補(bǔ)全位數(shù)的方法
今天小編就為大家分享一篇js實(shí)現(xiàn)前面自動(dòng)補(bǔ)全位數(shù)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-10-10
JavaScript單例模式實(shí)現(xiàn)自定義彈框
這篇文章主要為大家詳細(xì)介紹了JavaScript單例模式實(shí)現(xiàn)自定義彈框,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10
面向?qū)ο罄^承實(shí)例(a如何繼承b問(wèn)題)(自寫(xiě))
經(jīng)常會(huì)看到a如何繼承b的問(wèn)題;決定寫(xiě)一下,其實(shí)繼承就是繼承父級(jí)的屬性和方法,感興趣的朋友可以參考下哈,希望對(duì)大家有所幫助2013-07-07
JavaScript大數(shù)相加相乘的實(shí)現(xiàn)方法實(shí)例
這篇文章主要給大家介紹了關(guān)于JavaScript大數(shù)相加相乘的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10

