Heim >WeChat-Applet >Mini-Programmentwicklung >Beispielanalyse eines WeChat-Applets, das eine synchrone Anforderungsautorisierung implementiert

Beispielanalyse eines WeChat-Applets, das eine synchrone Anforderungsautorisierung implementiert

黄舟
黄舟Original
2017-09-12 11:38:563257Durchsuche

In diesem Artikel werden hauptsächlich relevante Informationen zur detaillierten Erläuterung der synchronen Anforderungsautorisierung des WeChat-Applets vorgestellt. Wenn das Applet zum ersten Mal geöffnet wird, muss ich mehrere Berechtigungen gleichzeitig anfordern, und der Benutzer autorisiert sie nacheinander 1. Um diese Anforderung zu erfüllen, ist es erforderlich. Freunde können sich auf die folgende

Detaillierte Erläuterung der WeChat-Applet-Synchronisierungsanforderungsautorisierung beziehen

Anforderungsanalyse:

1. Wenn das Miniprogramm zum ersten Mal geöffnet wird, muss ich mehrere Berechtigungen gleichzeitig anfordern, und der Benutzer autorisiert sie nacheinander.


([‘scope.userInfo',‘scope.userLocation',‘scope.address',‘scope.record',‘scope.writePhotosAlbum'])

Problemanalyse:

1 Die wx.authorize-Schnittstelle wird aufgerufen Gleichzeitig werden bei der Berechtigung mehrerer Anfragen aus asynchronen Gründen die Autorisierungsanfragen zusammen ausgegeben, was offensichtlich nicht den Anforderungen entspricht.

2. Promise kann das Problem sehr gut lösen. Der folgende Code ist in zwei Dateien unterteilt.


// scope.js
import es6 from '../helpers/es6-promise'

// 获取用户授权
function getScope(scopeName) {
 return new es6.Promise(function (resolve, reject) {
  // 查询授权
  wx.getSetting({
   success(res) {
    if (!res.authSetting[scopeName]) {
     // 发起授权
     wx.authorize({
      scope: scopeName,
      success() {
       resolve(0)
      }, fail() {
       resolve(1)
      }
     })
    }
   }
  })
 })
}

module.exports = { getScope: getScope }


// index.js
import scope from "../../service/scope"
Page({
onShow() {
  let list = ["scope.userInfo", "scope.userLocation", "scope.address", "scope.record"];
  // 记录请求结果
  let num = 0;
  // 问题1:怎么改成循环方式?
  scope.getScope(list[0]).then(function (res) {
   num += res;
   scope.getScope(list[1]).then(function (res) {
    num += res;
    scope.getScope(list[2]).then(function (res) {
     num += res;
     scope.getScope(list[3]).then(function (res) {
      num += res;
      // 调起设置界面
      if (num) {
       wx.openSetting({
        success(res) {
         // 允许获取用户信息
         if (res.authSetting["scope.userInfo"])
          userService.login()
        }
       })
      } else {
       userService.login()
      }
     })
    })
   })
  })
})

Analytische Lösung:

1. Problem 1 im Code ist zu dumm geschrieben, aber wenn ich versuche, es in einer Schleife aufzurufen, weiß ich nicht, wie ich mit dem Rückrufproblem umgehen soll.

2.wx.authorize Schnittstelle, die offizielle Erklärung des Erfolgsparameters ist (Rückruffunktion für erfolgreichen Schnittstellenaufruf), aber das ist nicht der Fall. Tatsächlich ist der Schnittstellenaufruf erfolgreich Die durch den Bereich angegebenen Berechtigungen werden eingeholt

Das obige ist der detaillierte Inhalt vonBeispielanalyse eines WeChat-Applets, das eine synchrone Anforderungsautorisierung implementiert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn