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

Unterschied zwischen den Methoden querySelector und getElementById in JS

Inhaltsverzeichnis 1. Übersicht 1.1 Verwendung vo...

React implementiert eine mehrkomponentige Wertübertragungsfunktion über Conetxt

Die Wirkung dieser Funktion ist ähnlich wie vue的p...

Javascript-Bereich und Abschlussdetails

Inhaltsverzeichnis 1. Geltungsbereich 2. Geltungs...

Ein kurzer Vortrag über die halbsynchrone MySQL-Replikation

Einführung MySQL erreicht eine hohe Verfügbarkeit...

Zusammenfassung der React-Grundlagen

Inhaltsverzeichnis Vorwort Start React-Lebenszykl...

Mysql-String-Abfangen und Abrufen von Daten im angegebenen String

Vorwort: Ich bin auf die Anforderung gestoßen, be...

Grafisches Tutorial zur Installation und Konfiguration von MySQL 5.7

In diesem Tutorial erfahren Sie alles über die In...

Docker stellt Containern dynamisch Ports zur Verfügung

Zeigen Sie die IP-Adresse des Containers an docke...

Zusammenfassung mehrerer APIs oder Tipps in HTML5, die Sie nicht verpassen sollten

In früheren Blogbeiträgen habe ich mich auf einige...

Können Sie alle Testfragen zum Erstellen der Webseite beantworten?

Fragen zum Webdesign. Können Sie alle beantworten...