Schritte zur Implementierung der Autorisierungsanmeldung für das WeChat-Applet von Uni-App

Schritte zur Implementierung der Autorisierungsanmeldung für das WeChat-Applet von Uni-App

Bildbeschreibung hier einfügen

1. Anwendung und Konfiguration der appID

1. So erhalten Sie die App-ID

Melden Sie sich bei der öffentlichen WeChat-Plattform an.

Offizieller Website-Link: https://mp.weixin.qq.com/

Beim ersten Mal müssen Sie auf die Schaltfläche „Registrieren“ klicken, um sich zu registrieren. Wenn Sie ein Konto haben, scannen Sie es einfach und melden Sie sich an.

Bildbeschreibung hier einfügen

Link zur offiziellen Website des Miniprogramms:

Bildbeschreibung hier einfügen

2. AppID-Konfiguration

Geben Sie die WeChat-Applet-ID ein, die Sie in manifest.json beantragt haben

Bildbeschreibung hier einfügen

2. Erfassung grundlegender Benutzerdaten

Hier sind zwei APIs, die Sie sich ansehen können.

2.1. Erfassung von Benutzerinformationen

Mit uni.getUserProfile können Sie eine Benutzerautorisierung anfordern, um Benutzerinformationen abzurufen, oder Sie können uni.getUserInfo verwenden, um

Bildbeschreibung hier einfügen

Nach erfolgreicher Autorisierung befinden sich die erhaltenen Benutzerinformationen in userInfo:

Bildbeschreibung hier einfügen

Seitenabschnitte:

 <button class="login-btn" type="primary" @click="getUserInfo">
        WeChat-Benutzer können sich mit einem Klick anmelden</button>

js-Teil:

 Methoden: {
    getUserInfo() {
      uni.getUserInfo({
        Anbieter: 'weixin',
        Erfolg: (res) => {
          console.log('getUserInfo', res);
        },
      });
    },
   }

Erhaltene Benutzergrunddaten (ohne OpenID = „eindeutige WeChat-Benutzerkennung“)

Bildbeschreibung hier einfügen

2.2. Benutzerinformationen abrufen 2

Mit uni.getUserInfo können Sie die Benutzerberechtigung zum Abrufen von Benutzerinformationen anfordern.

Die Seite ist dieselbe, der js-Teil:

 getUserInfo() {
      uni.getUserProfile({
        desc: 'Nach dem Einloggen können Sie Daten synchronisieren',
        Sprache: 'zh_CN',
        Erfolg: (res) => {
          console.log('getUserProfile', res);
        },
      });
    },

Erhaltene Benutzergrunddaten (ohne OpenID = „eindeutige WeChat-Benutzerkennung“)

Bildbeschreibung hier einfügen

Zusammenfassung: Die von den beiden APIs uni.getUserProfile und uni.getUserInfo erhaltenen Benutzerdaten sind grundsätzlich identisch und verfügen beide nicht über „openid=》eindeutige WeChat-Benutzerkennung“.

3. Login-API aufrufen

3.1. Anmelde-API

Verwenden Sie die Methode uni.login, geben Sie „weixin“ als Providerparameter ein, und wenn im erfolgreichen Rückgabewert errMsg = „login:ok“ lautet, bedeutet dies Erfolg.
Das WeChat-Applet gibt eine Codezeichenfolge zurück

Bildbeschreibung hier einfügen

3.2. Beispielcode

 uni.login({
            Anbieter: 'weixin',
            Erfolg: (res) => {
              console.log('res-login', res);
              dieser.Code = res.Code;
              Konsole.log('Code', Res.Code);
              wenn (res.errMsg == 'login:ok') {
              //TODO Code abrufen und die Backend-Schnittstelle mit Code-Parameter aufrufen}

4. Erhalt eindeutiger Identifikationsinformationen

4.1. Offizielle Website-Dokumentation

Das offizielle Website-Dokument verwendet den erhaltenen Code, um die WeChat-Anmeldeoberfläche anzufordern und OpenID und Sitzungsschlüssel abzurufen.

Bildbeschreibung hier einfügen

4.2. Schnittstellenbeschreibung

Bildbeschreibung hier einfügen

Anforderungsmethode: GET
APPID: Die eindeutige Kennung des Miniprogramms. Die Methode zum Abrufen finden Sie weiter oben.
SECRET: Der geheime Schlüssel, der das Miniprogramm eindeutig identifiziert. Bitte beachten Sie die oben beschriebene Methode zum Abrufen der APPID. Er steht direkt darunter.
JSCODE: Dieses Frontend ruft uni.login auf, um zu erhalten

Erhalten Sie https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code

Bildbeschreibung hier einfügen

5. Benutzer an die Anmeldung binden

Nachdem Sie die eindeutige ID des WeChat-Benutzers erhalten haben, können Sie sie an den Benutzer in Ihrem eigenen System binden. Ich füge das Feld weixinId zur Benutzertabelle hinzu und springe zu meiner eigenen Benutzerbindungsschnittstelle. Wenn der Benutzer WeChat binden möchte, wird die weixinId der Benutzerdaten in dieser Zeile aktualisiert. Wenn sich der Benutzer das nächste Mal über WeChat anmeldet und Benutzerdaten über openId abgefragt werden können, bedeutet dies, dass sie gebunden wurden und der Benutzer angemeldet ist

5.1. Codebeispiele (ungepackt)

Frontend-Teil:

 /**
     *
     * Benutzerinformationen abrufen */
    getUserInfo() {
      // Ladebox anzeigen uni.showLoading({
        Titel: 'Wird geladen',
      });
      uni.getUserProfile({
        desc: 'Nach dem Einloggen können Sie Daten synchronisieren',
        Erfolg: async (Objekt) => {
          konsole.log('obj', obj);
          //Aktion aufrufen und Login-Schnittstelle anfordern // warte auf this.login(obj);
          uni.login({
            Anbieter: 'weixin',
            Erfolg: (res) => {
              console.log('res-login', res);
              dieser.Code = res.Code;
              Konsole.log('Code', Res.Code);
              wenn (res.errMsg == 'login:ok') {
                uni
                  .Anfrage({
                    URL:
                      'http://127.0.0.1:8080/wxh5/wx/user/' +
                      'wx55822xxxx75e422' +
                      '/Login/',
                    Daten: {
                      Code: dieser.Code,
                    },
                  })
                  .then((res) => {
                  //Nachdem Sie OpenID und Session_k erhalten haben, Ihre eigene Logik console.log('Autorisierte Anmeldung', res[1].data);
                    Konsole.log(res[1].data.openid);
                    Konsole.log(res[1].data.session_key);
                    // Tu etwas.................
                  });
                Konsole.log('res', res);
              }
            },
          });
        },
        fehlgeschlagen: () => {
          uni.showToast({
            Titel: 'Autorisierung storniert',
            Symbol: „Fehler“,
            Maske: wahr,
          });
        },
        vollständig: () => {
          //Ladevorgang ausblenden
          uni.hideLoading();
        },
      });
    },

Backend

 @GetMapping("/login")
    öffentliche String-Anmeldung(@PathVariable String-App-ID, String-Code) {
        wenn (StringUtils.isBlank(code)) {
            returniere „leeren Jscode“;
        }

        endgültiger WxMaService wxService = WxMaConfiguration.getMaService(appid);

        versuchen {
            WxMaJscode2SessionResult-Sitzung = wxService.getUserService().getSessionInfo(Code);
            dies.logger.info(session.getSessionKey());
            Dies.logger.info(session.getOpenid());
            //TODO kann seine eigene Logik hinzufügen und geschäftsbezogene Daten zuordnen return JsonUtils.toJson(session);
        } Fang (WxErrorException e) {
            dieser.logger.error(e.getMessage(), e);
            gibt e.toString() zurück;
        }
    }

5.2. Codebeispiele (Verpackung)

 /**
     *
     * Benutzerinformationen abrufen */
    getUserInfo() {
      // Ladebox anzeigen uni.showLoading({
        Titel: 'Wird geladen',
      });
      uni.getUserProfile({
        desc: 'Nach dem Einloggen können Sie Daten synchronisieren',
        Erfolg: async (Objekt) => {
          // diese.Benutzerinfo = obj.Benutzerinfo;
          //Aktion aufrufen, um Login-Schnittstelle anzufordern uni.login({
            Anbieter: 'weixin',
            Erfolg: async (res) => {
              dieser.Code = res.Code;
              // console.log('Anmelden, um Code zu erhalten', res.code);
              wenn (res.errMsg == 'login:ok') {
                warte auf diese.loginAuth({
                  Benutzerprofil: obj,
                  Anwendungs-ID: „wx558xxxxxxxxxxxxxxx2“,
                  Code: dieser.Code,
                });
              }
            },
          });
        },
        fehlgeschlagen: () => {
          uni.showToast({
            Titel: 'Autorisierung storniert',
            Symbol: „Fehler“,
            Maske: wahr,
          });
        },
        vollständig: () => {
          //Ladevorgang ausblenden
          uni.hideLoading();
        },
      });
    },
  },

Benutzer.js

 /**
 * Autorisierte Anmeldung durch WeChat-Benutzer mit App-ID- und Code-Parametern. Aufruf der Backend-Schnittstelle zum Abrufen der OpenID
 */
Exportfunktion loginAuth(Daten) {
  Rückgabeanforderung({
    URL: '/wx/Benutzer/' + Daten.App-ID + '/Login/',
    Daten: {
      Code: Datencode,
    },
  });
}

Vuex-Benutzermodul (user.js)

 // Autorisierte Anmeldung durch WeChat-Benutzer mit App-ID- und Code-Parametern. Aufruf der Backend-Schnittstelle zum Abrufen der OpenID
    async loginAuth(Kontext, Daten) {
      console.log('Daten', Daten);
      const userInfo = Daten.Benutzerprofil;
      const { Inhalt: res } = warte auf loginAuth({
        appid: Daten.appid,
        Code: Datencode,
      });

      // Analysieren Sie das vom Backend gesendete JSON-Objekt const userAuthInfo = JSON.parse(res);
      const openid = userAuthInfo.openid;
      // console.log('sessionKey', userAuthInfo.sessionKey);
      Konsole.log('openid', openid);

      // In Vuex speichern und committen
      this.commit('Benutzer/setOpenid', userAuthInfo.openid);
      this.commit('Benutzer/setUserInfo', JSON.parse(userInfo.rawData));
    },

Bildbeschreibung hier einfügen

Bildbeschreibung hier einfügen

6. Open-Source-Projektadresse

6.1. Frontend

Applet-Einfrieren

6.2. Backend

weixin-java-miniapp

Dies ist das Ende dieses Artikels über die autorisierte Anmeldung beim Uni-App WeChat-Applet. Weitere relevante Inhalte zur autorisierten Anmeldung beim Uni-App WeChat-Applet finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den verwandten Artikeln weiter unten. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Verwenden Sie die Uni-App, um Fallstrick-Datensätze für WeChat-Applets zu generieren
  • WeChat Mini-Programme werden global über die Uni-App geteilt
  • Implementierung der Anmeldeberechtigung für das Uni-App WeChat-Applet
  • Beispiel für die Konvertierung eines WeChat-Applets in ein Uni-App-Projekt
  • uni-app entwickelt Ortungsfunktion für WeChat-Applet

<<:  Einführung in Container-Datenvolumes in Docker

>>:  Beispiel für die Erstellung eines halbtransparenten Hintergrundbilds und undurchsichtigen Inhalts in CSS3

Artikel empfehlen

Detaillierte Erklärung langsamer MySQL-Abfragen

Informationen zu MySQL-Vorgängen abfragen Status ...

Probleme und Lösungen bei der Installation von Docker in der Alibaba Cloud

Frage Bei der Installation von Docker mithilfe de...

SSM VUE Axios Detaillierte Erklärung

Inhaltsverzeichnis Wie wird das SQL-Protokoll ang...

Axios storniert wiederholte Anfragen

Inhaltsverzeichnis Vorwort 1. So stornieren Sie e...

Detaillierte Erklärung zu anonymen Slots und benannten Slots in Vue

Inhaltsverzeichnis 1. Anonyme Slots 2. Benannte S...

HTML-Implementierung eines einfachen Rechners mit detaillierten Ideen

Code kopieren Der Code lautet wie folgt: <!DOC...

Einführung in die Linux-Dateikomprimierung und -Verpackung

1. Einführung in Komprimierung und Verpackung All...

Grundlegende Verwendung von UNION und UNION ALL in MySQL

In der Datenbank führen sowohl die Schlüsselwörte...

So fragen Sie Daten aus mehreren unabhängigen Tabellen und Paging in MySQL ab

Mysql mehrere unabhängige Tabellen Abfragedaten u...

Detaillierte Erklärung der benutzerdefinierten Swiper-Komponente in JavaScript

Inhaltsverzeichnis Effektanzeige Komponenteneinst...

Installation und Verwendung der Ubuntu 18.04 Serverversion (Bild und Text)

1 Schritte zur Systeminstallation Betriebssystemv...