小程序模板網(wǎng)

簡化微信小程序用戶授權(quán)

發(fā)布時間:2020-05-20 09:54 所屬欄目:小程序開發(fā)教程

在開發(fā)小程序中,獲取用戶授權(quán)是一個繁瑣的步驟,覺得不錯,請點贊哦

相關(guān)API

wx.getSetting({
  success (res) {
    console.log(res.authSetting)
    // res.authSetting = {
    //   "scope.userInfo": true,
    //   "scope.userLocation": true
    // }
  }
})
復(fù)制代碼
// 可以通過 wx.getSetting 先查詢一下用戶是否授權(quán)了 "scope.record" 這個 scope
wx.getSetting({
  success(res) {
    if (!res.authSetting['scope.record']) {
      wx.authorize({
        scope: 'scope.record',
        success () {
          // 用戶已經(jīng)同意小程序使用錄音功能,后續(xù)調(diào)用 wx.startRecord 接口不會彈窗詢問
          wx.startRecord()
        }
      })
    }
  }
})
復(fù)制代碼

Promisify相關(guān)API

微信小程序的API都是回調(diào)函數(shù),一不小心就是回調(diào)地獄。我們可以用Promise封裝下

const promisify = fn=>(arg={})=>new Promise((resolve,reject)=>{
  arg.success=function(res){
    resolve(res)
  }
  arg.fail=function(err){
    reject(err)
  }
  fn(arg)
})
復(fù)制代碼

使用:

const wxGetSetting = promisify(wx.getSetting)
wxGetSetting().then(res=>console.log(res))
復(fù)制代碼

解釋

// promisify接受一個fn函數(shù)
const promisify = function(fn){
// promisify返回一個函數(shù),這個函數(shù)可以接受一個arg參數(shù)
// arg默認是空對象,因為微信小程序api都是接受一個對象參數(shù)的
  return function(arg={}){
    // 該參數(shù)執(zhí)行后,返回一個promise對象
    return new Promise((resolve,reject)=>{
      // 給參數(shù)加上success和fail
      arg.success=function(res){
        resolve(res)
      }
      arg.fail=function(fail){
        reject(fail)
      }
      // 執(zhí)行fn
      fn(arg)// fn是傳進來的wx.getSetting
    })
  }
}
復(fù)制代碼

簡化授權(quán)

const wxGetSetting = promisify(wx.getSetting)
const wxAuthorize = promisify(wx.authorize)
function myAuthorize(authSetting) {
    return new Promise((resolve, reject) => {
        wxGetSetting().then(res => {
            if (res.authSetting[authSetting]) {
                resolve("ok")
            } else {
                return wxAuthorize({
                    scope: authSetting
                }).then(res => {
                    resolve("ok")
                }).catch(err => {
                    reject("fail")
                })
            }
        })

    })
}
復(fù)制代碼

使用:

myAuthorize("scope.userLocation")
  .then(res=>console.log(res))
	.catch(err=>console.log(err))
復(fù)制代碼
 


易優(yōu)小程序(企業(yè)版)+靈活api+前后代碼開源 碼云倉庫:starfork
本文地址:http://22321a.com/wxmini/doc/course/25230.html 復(fù)制鏈接 如需定制請聯(lián)系易優(yōu)客服咨詢:800182392 點擊咨詢
QQ在線咨詢