商城系統(tǒng) 注冊(cè)

微信小程序getUserInfo授權(quán)問題的解決辦法

2020-09-27|HiShop
導(dǎo)讀:我們?cè)谑状芜M(jìn)入小程序時(shí),會(huì)通過getUserInfo調(diào)起用戶授權(quán)的彈窗,但是根據(jù)微信小程序,最新更新解釋,開發(fā)工具,體驗(yàn)版本將不再支持這個(gè)授權(quán)方式。...

我們?cè)谑状芜M(jìn)入小程序時(shí),會(huì)通過getUserInfo調(diào)起用戶授權(quán)的彈窗,但是根據(jù)微信小程序,最新更新解釋,開發(fā)工具,體驗(yàn)版本將不再支持這個(gè)授權(quán)方式

而是通過button組件讓用戶自主去點(diǎn)擊已完成授權(quán)目的(這個(gè)對(duì)開發(fā)者來說真的是很蛋疼)
那我們?cè)趺匆宰钚〉拇鷥r(jià),來完成授權(quán)邏輯的升級(jí)呢?

微信小程序getUserInfo授權(quán)問題的解決辦法


這里根據(jù)官方文檔給出我的解決方案

 


設(shè)置一個(gè)用戶授權(quán)登錄的過渡頁面,用戶首次,進(jìn)入小程序時(shí),通過<button wx:if="{{canIUse}}" open-type="getUserInfo"bindgetuserinfo="bindGetUserInfo">同意授權(quán)登錄</button> <view wx:else>請(qǐng)升級(jí)微信版本</view> 讓用戶自己去點(diǎn)擊這個(gè)授權(quán)登錄的按鈕,然后再去進(jìn)行后續(xù)的業(yè)務(wù)邏輯

 


延伸


如果用戶恰好在某個(gè)頁面登錄態(tài)失效時(shí),統(tǒng)一讓其跳轉(zhuǎn)到登錄界面,點(diǎn)擊授權(quán)登錄成功,返回到之前的頁面

下面是具體代碼

 1 App.js
 2 App({
 3     onLaunch: function () {},
 4     onShow: function () {},
 5     .....,
 6     toLogin: function () {
 7 // 前往授權(quán)登錄界面
 8         wx.navigateTo({
 9         url: '/pages/toLogin/toLogin',
10     })
11     },
12     ready: function () {
13 return Promise((resolve, reject) => {
14             const userkey = wx.getStorageSync('userkey')
15             const userId = wx.getStorageSync('userId')
16             const sessionData = wx.getStorageSync('sessionData')
17 // 檢查用戶是否具有登陸態(tài)
18 if (!userkey || !userId || !sessionData) {
19 // 如果未登錄就前往登錄界面
20 this.toLogin()
21             } else {
22 // 如果有就只要更改一下Promise,以繼續(xù)執(zhí)行后續(xù)操作
23                 resolve()
24             }
25         })
26     }
27 })

 

 1 somePage.js
 2 var app = getApp()
 3 const someServces = require('統(tǒng)一接口處理文件')
 4 Page({
 5     data: {},
 6     onLoad: function (){},
 7     onShow: function (){},
 8     ......,
 9     getSomeData () {
10 // 這里我們每次調(diào)用接口時(shí),都要先去調(diào)用app.js中的ready方法
11 // 在app中ready會(huì)返回一個(gè)promise對(duì)象,只有其返回的狀態(tài)時(shí)resolved狀態(tài)時(shí)才會(huì)觸發(fā).then()方法
12         app.ready().then(() => {
13 // 獲取服務(wù)端數(shù)據(jù)
14         })
15     }
16 })

電話咨詢 預(yù)約演示 0元開店