小程序拒絕授權恢復辦法,小程序授權登錄失敗再重新登錄
很多人在進入小程序之后,會彈出一個窗口,允許授權,很多用戶會不經意間關閉拒絕,那么對于小程序開發(fā)者來說,需要如何取消這種拒絕授權呢,下面為大家解答。
1小程序被拒絕授權之后
首先在首頁拒絕了授權之后呢,會拉起一個模態(tài)彈窗,這點和上邊那篇文章中一樣的。
app.js中改寫一下getUserInfo這個函數
getUserInfo:function(cb){ var that = this if(this.globalData.userInfo){ typeof cb == "function" && cb(this.globalData.userInfo) }else{ //調用登錄接口 wx.login({ success: function () { wx.getUserInfo({ success: function (res) { that.globalData.userInfo = res.userInfo typeof cb == "function" && cb(that.globalData.userInfo) }, fail: function(){ wx.showModal({ title: '用戶未授權', content: '如需正常使用小程序功能,請按確定并且在【我的】頁面中點擊授權按鈕,勾選用戶信息并點擊確定。', showCancel: false, success: function (res) { if (res.confirm) { console.log('用戶點擊確定') } } }) } }) } }) } }
如果用戶拒絕了授權,則會彈出一個框:
2引導用戶到重新授權按鈕
上步中已經提到,需要用戶到另一個tab中再點擊一個按鈕,為什么要這么設置呢。主要是因為單單靠用戶點擊右上角來設置這個授權有那么一些麻煩,因為需要經以下這些步驟:
- 用戶點擊右上角【…】
- 關于XXX(小程序的名稱)
- 再點擊右上角【…】
- 選擇設置
- 打開用戶信息
……一看到就已經想手動再見了 所以我選擇在【我的】這個tab中添加一個用戶未授權時才能看到的button,點擊了這個神奇的button,就能再次選擇是否授權。 先別急著吐槽按鈕丑,看碼: 我在這個頁面中首先加了一個叫做noAuthorized的變量,它的默認值是true,代表【是的,就是沒授權咋地了?】
給這個按鈕綁定的事件:
tapToAuthorize: function(){ //再授權 wx.openSetting({ success: (res) => { /* * res.authSetting = { * "scope.userInfo": true, * "scope.userLocation": true * } */ //因為openSetting會返回用戶當前設置,所以通過res.authSetting["scope.userInfo"]來判斷用戶是否勾選了【用戶信息】這一項 if (res.authSetting["scope.userInfo"]===true){ var that = this app.getUserInfo(function (userInfo) { //更新數據 that.setData({ userInfo: userInfo, noAuthorized: false }) }) } else{ wx.showModal({ title: '用戶未授權', content: '如需正常使用小程序,請點擊授權按鈕,勾選用戶信息并點擊確定。', showCancel: false, success: function (res) { if (res.confirm) { console.log('用戶點擊確定') } } }) } } }) }
如此前提到的文中所說,小程序提供了wx.openSetting(OBJECT)和wx.getSetting(OBJECT),前者可以調起客戶端小程序設置界面,返回用戶設置的操作結果,后者可以獲取用戶當前設置。由于此處已經調用了openSetting可以返回操作結果進行判斷,所以第二個就用不上了。然后,
-
點擊授權按鈕后,先彈出一個框
-
如果勾選了用戶信息并點擊了確定,則setdata后頁面刷新,按鈕消失,顯示用戶頭像昵稱等信息。
- 如果沒有勾選又點擊了確定,則再次彈出模態(tài)彈窗,提示授權的重要性:
第二部分:如何開通一個小商店