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

Beispielanalyse eines WeChat-Applets, das eine synchrone Anforderungsautorisierung implementiert

黄舟
Freigeben: 2017-09-12 11:38:56
Original
3259 Leute haben es durchsucht

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'])
Nach dem Login kopieren

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 }
Nach dem Login kopieren


// 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()
      }
     })
    })
   })
  })
})
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage