首頁  >  文章  >  微信小程式  >  微信小程式取消授權問題:使用者拒絕授權了,該怎麼處理呢?

微信小程式取消授權問題:使用者拒絕授權了,該怎麼處理呢?

php是最好的语言
php是最好的语言原創
2018-08-04 11:02:2632481瀏覽

在做小程式開發的時候,我們常常會需要取得使用者的一些權限。例如取得使用者資訊用於直接登錄,取得地理位置用於定位等。但要是用戶拒絕授權了,該怎麼處理呢?

問題分析

在小程式裡面,取得到使用者權限是進行某些操作的必要前提。例如在進入小程式的時候,獲取到用戶信息,拿到 unionId 對應到自己平台的帳號進行登錄,免去用戶自己輸入帳號密碼,這就是一個不錯的體驗。

當我們呼叫wx.getUserInfo 或wx.getLocation 這種需要使用者授權的API 時,小程式會彈框讓使用者選擇授權:

當使用者選擇允許後,下次再進入小程式就不會再詢問了,直接獲得使用者授權(除非將小程式刪了再進入)。這裡的問題在於,當使用者點了拒絕之後,就拿不到相關授權了,而且在一段時間內,進入小程式都不會再出現這個彈框。

從使用者體驗及保護隱私的角度考慮,小程式最好是不用授權也可以使用(或體驗)。但有些類型的小程式確實是需要拿到使用者資訊才能使用的。這裡提供一個簡單的解決方案。

解決方案

以取得使用者資訊直接登入為例。增加一個授權頁面,作為進入小程式的第一個頁面,在這裡取得使用者資料和登入。預設可以什麼都不顯示,也可以當作引導頁來使用。

取得使用者資訊需要用到 wx.login 和 wx.getUserInfo 兩個 API,關於這兩個 API 的具體資訊大家可以到官方文件去查看。

增加一個登陸方法,程式碼如下:

//登录
login: function () {
  var that = this
  if (typeof success == "function") {
    this.data.getUserInfoSuccess = success
  }
  wx.login({
    success: function (res) {
      var code = res.code;
      wx.getUserInfo({
        success: function (res) {
          //平台登录
        },
        fail: function (res) {
          that.setData({
            getUserInfoFail: true
          })
        }
      })
    }
  })
}
  • 當上門程式碼走到了 fail 裡面,就可以認為在取得授權的時候,用戶點了拒絕。當getUserInfoFail 為true 的時候,可以展示一個取得授權的按鈕,例如像這樣:

接下來介紹另一個API : wx.openSetting ,使用wx.openSetting 可以跳到小程式的授權設定介面,在安卓裡面它長這樣:

在點擊授權按鈕後跳到這裡,讓用戶授權了才給進入首頁,否則就停留在授權頁面。

但還有個小問題,這個API 是基礎函式庫1.1.0 才有的,所以需要做相容處理:

所以,最後跳轉授權的程式碼如下:

//跳转设置页面授权
openSetting: function () {
  var that = this
  if (wx.openSetting) {
    wx.openSetting({
      success: function (res) {
        //尝试再次登录
        that.login()
      }
    })
  } else {
    wx.showModal({
      title: '授权提示',
      content: '小程序需要您的微信授权才能使用哦~ 错过授权页面的处理方法:删除小程序->重新搜索进入->点击授权按钮'
    })
  }
}
  • 還好1.1.0 已結算是比較早的版本了,現在都出到1.3.0 了。

同樣的處理方式也可以用在取得別的權限上

#相關文章:

微信小程式授權機制詳解

微信小程式實作同步請求授權的實例分析

以上是微信小程式取消授權問題:使用者拒絕授權了,該怎麼處理呢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn