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

js verwendet die Reduce-Methode, um Ihren Code eleganter zu gestalten

Vorwort In tatsächlichen Projekten kann die häufi...

Implementierung der CommonJS-Modularität in Browsern ohne Kompilierung/Server

Inhaltsverzeichnis Einführung 1. Was ist one-clic...

Detaillierte Erklärung des JavaScript-Timer-Prinzips

Inhaltsverzeichnis 1. setTimeout()-Timer 2. Stopp...

Anwendungsbeispiele für den Mysql Inner Join (unbedingt lesen)

Grammatikregeln SELECT Spaltenname(n) FROM Tabell...

Analyse der MySql CURRENT_TIMESTAMP-Funktion anhand eines Beispiels

Beim Erstellen eines Zeitfelds STANDARD CURRENT_T...

Detaillierte Erklärung der Methoden und Eigenschaften von Vue

Vue-Methoden und -Eigenschaften 1. Methoden Verwe...

Lösung für den internen Serverfehler Nginx 500

Als ich heute Nginx verwendete, trat ein 500-Fehl...

Detaillierte Erklärung der Desktop-Anwendung mit Vue3 und Electron

Inhaltsverzeichnis Vue CLI erstellt ein Vue-Proje...

Eine kurze Diskussion über allgemeine Operationen von MySQL in cmd und Python

Umgebungskonfiguration 1: Installieren Sie MySQL ...

Docker-Praxis: Python-Anwendungscontainerisierung

1. Einleitung Container nutzen einen Sandbox-Mech...

Ein unvollständiger Leitfaden zur JavaScript-Toolchain

Inhaltsverzeichnis Überblick Statische Typprüfung...

Design-Referenz: Erfolgsbeispiel für die Erstellung einer WordPress-Website

Jede dieser 16 Sites ist eine sorgfältige Lektüre ...