Leitfaden zu bewährten Methoden für die Benutzerautorisierung im WeChat Mini-Programm

Leitfaden zu bewährten Methoden für die Benutzerautorisierung im WeChat Mini-Programm

Vorwort

Bei der Entwicklung von WeChat-Applets müssen Sie häufig Seiten verwenden, die bestimmte Benutzerberechtigungen erfordern. Wenn Sie sich beispielsweise anmelden möchten, müssen Sie persönliche Informationen abrufen. Wenn Sie eine Gesichtserkennung durchführen möchten, müssen Sie Kameraberechtigungen abrufen. Wenn Sie Standortkartenfunktionen ausführen möchten, müssen Sie die Standortberechtigungen des Benutzers abrufen. Wenn Sie Bilder im Album des Benutzers speichern möchten, müssen Sie Albumberechtigungen abrufen usw.

WeChat-Umfangsprozess:

Die meisten Funktionen sind ohne Autorisierung nicht verfügbar. Normalerweise überprüfe ich, ob die Berechtigung aktiviert ist, und wenn sie aktiviert ist, verwende ich sie weiterhin. Wenn sie nicht aktiviert ist, frage ich nach, ob ich weiterhin eine Autorisierung anfordern kann. Wenn sie immer noch abgelehnt wird, frage ich nach und lasse den Benutzer manuell zur Einstellungsseite gehen, um sie zu aktivieren …

#Normale Logik

Aufgeschrieben könnte das Ganze aber so aussehen:

wx.getSetting({
    Erfolg(res)=>{
        wenn (!res.authSetting['scope']) {
          console.log('Nicht autorisiert')
              wx.autorisieren({
                Umfang: "Umfang",
                Erfolg() {
                    console.log('Autorisierung erfolgreich')
                },
                scheitern() {
                    console.log('Autorisierung fehlgeschlagen, lassen Sie den Benutzer manuell autorisieren.')
                    wx.showModal({
                        Titel: 'Warme Tipps',
                        Inhalt: „xxx-Berechtigung ist nicht aktiviert“,
                        showCancel: false,
                        Erfolg(res) {
                        wenn (res.bestätigen) {
                            console.log('Benutzer klickt auf OK')
                            wx.openSetting({
                                Erfolg(res) {
                                    Konsole.log(res.authSetting)
                                    res.authSetting = {
                                    "scope.camera": wahr,
                                    }
                                }
                            })
                        } sonst wenn (res.abbrechen) {
                            console.log('Benutzer klickt auf Abbrechen')
                        }
                        }
                  })
                }
             })
        } anders {
          console.log('Autorisiert')
        }
    },
    Fehler(Fehler)=>{}
})

Wir schreiben jetzt das Jahr 2012. Wenn dies niedergeschrieben und mit Geschäftslogik vermischt wird, wird es furchtbar.

Ich konnte es nicht ertragen, also habe ich einige Zeit damit verbracht, eine Funktion zu kapseln. Geben Sie einfach den angegebenen Berechtigungsnamen ein, um festzustellen, ob der Benutzer die Berechtigung aktiviert hat. Wenn sie nicht aktiviert ist, wird eine Eingabeaufforderung angezeigt. Wenn sie immer noch nicht aktiviert ist, gehen Sie zur Einstellungsseite, um sie manuell zu aktivieren (kurz gesagt, sie muss aktiviert werden).

Ursprünglich wollte ich einen Codeausschnitt schreiben, stellte aber später fest, dass beim Aufruf von openSetting im Tool ein Problem auftrat, sodass ich aufgeben musste.

#Codedetails

// utils/auth.js

/**
 * @param {
 * authType: Autorisierungstyp* }
 */

module.exports = asynchrone Funktion wxAuth(authType) {
  // scopeArr-Referenz: https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/authorize.html
  lass UmfangArr = [
    "Benutzerinfo",
    "Benutzerstandort",
    "BenutzerstandortHintergrund",
    "Adresse",
    "Rechnungstitel",
    "Rechnung",
    "wir sind",
    "aufzeichnen",
    "SchreibeFotosAlbum",
    "Kamera",
  ];
  wenn (scopeArr.indexOf(authType) == -1) {
    return console.error("Bitte geben Sie den richtigen Autorisierungstyp ein");
  }
  let scope = "Bereich." + Authentizitätstyp;
  let isUserSet = warte auf getSettingSync(Umfang);
  wenn (isUserSet) true zurückgibt;
  let isAuthorize = warte auf authorizeSync(scope);
  wenn (isAuthorize) true zurückgibt;
  lass showModalMes = warte auf showModalSync(Umfang);
  // Popup-Fenster mit der Aufforderung zur Autorisierung if (showModalMes) {
    // Manuelle Autorisierung durchführen let openSet = await openSettingSync(scope);
    wenn (öffnenSet) {
      gibt true zurück;
    } anders {
      gibt false zurück;
    }
  } anders {
    // Autorisierung ablehnen return false;
  }
};

// Feststellen, ob der Benutzer die Autorisierungsfunktion aktiviert hat getSettingSync(scope) {
  returniere neues Promise((lösen, ablehnen) => {
    wx.getSetting({
      Erfolg(res) {
        wenn (!res.authSetting[Umfang]) {
          console.log("Nicht autorisiert");
          Lösung (falsch);
        } anders {
          console.log("Autorisiert");
          Entschlossenheit (wahr);
        }
      },
      Fehler(Fehler) {
        ablehnen();
        console.error("wx.getSetting-Fehler", err);
      },
    });
  });
}
// Benutzerautorisierung anfordern Funktion authorizeSync(scope) {
  returniere neues Promise((lösen, ablehnen) => {
    wx.autorisieren({
      Umfang: Umfang,
      Erfolg() {
        Entschlossenheit (wahr);
        console.log("Autorisierung erfolgreich");
      },
      scheitern() {
        Lösung (falsch);
        console.log("Autorisierung fehlgeschlagen");
      },
    });
  });
}
// Popup-Fenster fordert den Benutzer zur manuellen Autorisierung auf Funktion showModalSync(scope) {
  returniere neues Promise((lösen, ablehnen) => {
    wx.showModal({
      Titel: "Tipps",
      Inhalt: `Für ein besseres Benutzererlebnis autorisieren Sie bitte die Funktion ${scope}`,
      confirmText: "Zur Autorisierung gehen",
      showCancel: false,
      Erfolg(res) {
        wenn (res.bestätigen) {
          console.log("Zur Bestätigung klicken");
          Entschlossenheit (wahr);
        } sonst wenn (res.abbrechen) {
          Lösung (falsch);
        }
      },
      Fehler(Fehler) {
        ablehnen();
        console.error(err, "wx.showModal-Fehler");
      },
    });
  });
}
// Ruft die Einstellungsschnittstelle des Client-Applets auf und gibt das von der Benutzerfunktion openSettingSync(scope) { festgelegte Operationsergebnis zurück.
  returniere neues Promise((lösen, ablehnen) => {
    wx.openSetting({
      Erfolg(res) {
        Konsole.log(res.authSetting);
        wenn (res.authSetting[Umfang]) {
          Entschlossenheit (wahr);
        } anders {
          Lösung (falsch);
        }
      },
      Fehler(Fehler) {
        ablehnen();
        console.error(err, "wx.openSetting-Fehler");
      },
    });
  });
}

#verwenden

JS-Codereferenz:

Authentifizierung importieren aus './../../utils/auth'
Seite({
   Daten:{
     isCameraAuth: false
   },
   beim Laden(){
         // Autorisierungscode auth('camera').then(() => {
      console.log('Autorisierung erfolgreich')
      dies.setData({
        isCameraAuth: wahr
      }
    }).catch((err) => {
      console.error('Autorisierung fehlgeschlagen');
    })
   }
})

WXML-Codereferenz:

<!-- index.wxml -->
<view>Ist es autorisiert: {{isCameraAuth}}</view>
<Kamera wx:if="{{isCameraAuth}}" style="width: 100%; height: 300px;"></Kamera>

#Vorschau

Zu diesem Zweck habe ich eine Demo erstellt. Klicken Sie auf Demo-Vorschau, um die Vorschau direkt im Entwicklungstool zu öffnen.

Zusammenfassen

Damit ist dieser Artikel über die Best Practices für die Benutzerautorisierung des WeChat Mini-Programms abgeschlossen. Weitere relevante Inhalte zur Benutzerautorisierung des WeChat Mini-Programms finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • WeChat-Applet-Autorisierung zum Abrufen von Benutzerdetails, OpenID-Beispiel, detaillierte Erläuterung
  • So erhalten Sie die Mobiltelefonnummer durch Benutzerautorisierung im WeChat Mini-Programm (getPhoneNumber)
  • WeChat-Applet-Benutzerautorisierung und wie Sie feststellen können, ob die Anmeldung abgelaufen ist
  • Das WeChat-Applet erhält eine Mobiltelefonnummer, um die Benutzeranmeldefunktion zu autorisieren
  • WeChat Mini-Programm: Benutzerautorisierung, Standortautorisierung und Erhalt von WeChat-gebundenen Mobiltelefonnummern
  • Das WeChat Mini-Programm bestimmt, ob der Benutzer die Erfassung personenbezogener Daten erneut autorisieren muss
  • Wenn das Popup-Fenster für die Benutzerautorisierung des WeChat Mini-Programms dies ablehnt, leiten Sie den Benutzer zur erneuten Autorisierung an
  • WeChat Mini-Programm - So erhalten Sie den geografischen Standortnamen des Benutzers (ohne Benutzerautorisierung)
  • So erhalten Sie die Benutzerautorisierung im WeChat Mini-Programm erneut
  • Detaillierte Erläuterung der Benutzerautorisierungsanmeldung für die WeChat-Applet-Entwicklung

<<:  IP-Whitelist für die Linux-Serverkonfiguration zum Verhindern von Remote-Anmeldungen und Port-Offenlegung

>>:  Tutorial zur manuellen Installation und Konfiguration von mysql8.0.11 winx64

Artikel empfehlen

Grundlegende Verwendung und Fallstricke der JavaScript-Array-Methode sort()

Vorwort Bei der täglichen Codeentwicklung gibt es...

So passen Sie die Bash-Eingabeaufforderung in Linux an

Vorwort Wie wir alle wissen, ist Bash (die Bourne...

So geben Sie Parametervariablen extern im Docker an

In diesem Artikel wird hauptsächlich erläutert, w...

Einführung in MySQL-Anweisungskommentare

MySQL unterstützt drei Arten von Kommentaren: 1. ...

Installieren Sie Redis und MySQL auf CentOS

1|0MySQL (MariaDB) 1|11. Beschreibung Das Datenba...

Detaillierte Erklärung der React-Ereignisbindung

1. Was ist In react Anwendungen werden Ereignisna...

Welche magischen Anwendungen haben CSS-Filter?

Hintergrund Grundlegende Konzepte CSS filter wend...

So installieren Sie MySQL und Redis in Docker

Dieser Artikel basiert auf der CentOS 7.3-Systemu...

Codebeispiele für allgemeine Docker-Datenvolumenvorgänge

Wenn der Entwickler Dockerfile zum Erstellen des ...

Fassen Sie den User-Agent beliebter Browser zusammen

1. Grundkenntnisse: HTTP-Header-Benutzeragent Use...

Aktivieren Sie den SSHD-Vorgang im Docker

Installieren Sie zunächst den OpenSSH-Server im D...

jQuery-Plugin zur Implementierung eines gestapelten Menüs

Jeden Tag ein jQuery-Plugin - gestapeltes Menü. Z...