Detaillierte Erläuterung der offiziellen Gesichtsüberprüfung des WeChat Mini-Programms

Detaillierte Erläuterung der offiziellen Gesichtsüberprüfung des WeChat Mini-Programms

Das Miniprogramm sammelte persönliche Benutzerinformationen und lud sie hoch, wurde jedoch abgelehnt:

Hallo, die Funktionen der Mini-Programm-Seite umfassen: das Sammeln biometrischer Daten des Benutzers (Gesichtsfotos oder Videos) und anderer sensibler Informationen zur Identitätserkennung oder Identifizierung,

Um die vertraulichen persönlichen Identitätsinformationen der Benutzer zu schützen, unterstützt die Plattform diese Funktion derzeit nicht. Bitte entfernen Sie die entsprechenden Merkmale und senden Sie die Anfrage erneut.

Dann suchte ich auf Baidu und fand heraus, dass ich mich bewerben musste für

wx.startFacialRecognitionVerify({})

https://api.weixin.qq.com/cgi-bin/token?appid=appid&secret=secret&grant_type=client_credential

https://api.weixin.qq.com/cityservice/face/identify/getinfo?access_token=access_token

https://api.weixin.qq.com/cityservice/face/identify/getimage?access_token=access_token

Zunächst müssen Sie zwei Parameter an die von Ihnen beantragte Schnittstelle senden: Name und ID-Nummer

foto.js

Daten: {
    geöffnete ID: '',
    custName: 'Name',
    custIdCard: 'Ausweisnummer',
    Bild überprüfen: ''
  },
  /**
   * Lebenszyklusfunktion - auf Seitenladen warten*/
  onLoad: Funktion (Optionen) {
    dies.setData({
      Kundenname: Optionen.Kundenname,
      custIdCard: Optionen.custIdCard
    });
    var _this = dies;
    wx.checkIsSupportFacialRecognition({
      checkAliveType: 2,
      Erfolg: Funktion (res) {
        if (res.errCode === 0 || res.errMsg === "checkIsSupportFacialRecognition:ok") {
          //Gesichtserkennung aufrufen_this.startface(_this.data.custName.replace(/(^\s*)|(\s*)$/g, ""), _this.data.custIdCard); //Ausweisname, Ausweisnummer return;
        }
        wx.showToast('Die WeChat-Version ist zu niedrig, diese Funktion kann vorübergehend nicht verwendet werden, bitte aktualisieren Sie auf die neueste Version von WeChat.')
      },
      Fehler: Funktion (Res) {
        wx.showToast('Die WeChat-Version ist zu niedrig, diese Funktion kann vorübergehend nicht verwendet werden, bitte aktualisieren Sie auf die neueste Version von WeChat.')
      }

    })
  },
  startface(name, idcard) {
    console.log('Ich bin dabei!!!');
    var _this = dies;
    wx.startFacialRecognitionVerify({
      Name: _this.data.custName, //Name der ID-Karte idCardNumber: _this.data.custIdCard, //ID-Kartennummer Erfolg: Funktion (Res) {
        var verifyResult = res.verifyResult; //Authentifizierungsergebnis //Schnittstelle wx.request({ aufrufen
          URL: „https://api.weixin.qq.com/cgi-bin/token?appid=wx2cafec51ec4c2153&secret=8d3e68a5a2c702673340d72d1c7db4cc&grant_type=client_credential“,
          Daten: {

          },
          Methode: 'POST',
          Kopfzeile: {
            „Inhaltstyp“: „Anwendung/json;Zeichensatz=utf-8“
          },
          Erfolg: Funktion (res) {
            Konsole.log(Res.Daten);
            Konsole.log(Res.Daten.Zugriffstoken)
            var token = res.data.zugriffstoken;
            wx.Anfrage({
              URL: 'https://api.weixin.qq.com/cityservice/face/identify/getinfo?access_token=' + res.data.access_token,
              Daten: {
                verify_result: Überprüfungsergebnis
              },
              Methode: 'POST',
              Kopfzeile: {
                „Inhaltstyp“: „Anwendung/json;Zeichensatz=utf-8“
              },
              Erfolg: Funktion (res) {
                konsole.log(res.daten)
                console.log('Ich habe es endlich geschafft...')
                wx.Anfrage({
                  URL: 'https://api.weixin.qq.com/cityservice/face/identify/getimage?access_token=' + Token,
                  Daten: {
                    verify_result: Überprüfungsergebnis
                  },
                  Methode: 'POST',
                  Antworttyp: "Array-Puffer",
                  Kopfzeile: {
                    'Inhaltstyp': 'Anwendung/json;Zeichensatz=utf-8',
                  },
                  Erfolg: (res) => {
                    // console.log('data:image/png;base64,'+wx.arrayBufferToBases64(res))

                    Konsole.log(Res.Daten);
                    var base64 = wx.arrayBufferToBase64(res.data);
                    _this.setData({ verifyImg:'data:image/png;base64,'+base64})
                    wx.navigateTo({
                      url: '../msg/msg?msg=Herzlichen Glückwunsch, die Überprüfung Ihrer Informationen war erfolgreich&verifyImg=' + _this.data.verifyImg
                    });
                  },
                  Fehler: Funktion (Res) {
                    console.log('fehlgeschlagen', res.data)
                  }
                })

              },
              Fehler: Funktion (Res) {

              }
            })
          },
          Fehler: Funktion (Res) {

          }
        })



        console.log(überprüfenErgebnis)
        // wx.navigateTo({
        // URL: „../msg/msg?msg=Gesichtsüberprüfung erfolgreich“
        // });
      },
      checkAliveType: 2, //Bildschirm blinkt (Interaktionsmodus zur Gesichtsverifizierung, Standard 0, Zahlen lesen)
      fehlgeschlagen: err => {
        wx.showToast('Bitte sorgen Sie für ausreichend Licht, blicken Sie direkt und ohne Hindernisse auf das Telefon.')
        wx.navigateTo({
          url: „../msg/msg?msg=Bitte sorgen Sie für ausreichend Licht, blicken Sie direkt auf das Telefon und ohne Behinderung, verlassen Sie das Gebäude und versuchen Sie es erneut.“
        });
      }
    })
  }

Die größte Schwierigkeit besteht darin, dass Sie die Schnittstelle mehrere Male beantragen müssen und das endgültige Geschäft noch eine Union-ID benötigt, sodass Sie eine Authentifizierung auf der offenen WeChat-Plattform beantragen müssen.

Wenn Sie dann das Bild des Verifizierungsergebnisses abrufen möchten, benötigen Sie das oben genannte https://api.weixin.qq.com/cityservice/face/identify/getimage?access_token=access_token

Die zurückgegebenen Daten müssen in Base64-Code konvertiert und dann im Bild-Tag angezeigt werden. Ich übergebe sie direkt an das Backend.

Unten ist mein msg js Code

msg.js

const app = getApp();
Seite({

  /**
   * Ausgangsdaten der Seite */
  Daten: {
    Nachricht:'',
    Bild überprüfen:'',
    url:app.globalData.PostData
  },

  /**
   * Lebenszyklusfunktion - auf Seitenladen warten*/
  onLoad: Funktion (Optionen) {
    var Zeitstempel = Datum.parse(neues Datum());
    Zeitstempel = Zeitstempel/1000
    console.log(Optionen)
    var das = dies;
    dass.setData({
      msg:Optionen.msg,
      verifyImg:Optionen.verifyImg
    });
    console.log(diese.Daten.URL)
    console.log(das.Daten.verifyImg)
    
      wx.Anfrage({
        url: that.data.url+'fileUpload!upBase64.do', //Nur ein Beispiel, keine echte Schnittstelle addressdata: {
          Datei:that.data.verifyImg,
          Dateiname:Zeitstempel,
          Dateidaten:diese.Daten.verifyImg
        },
        Methode: 'POST',
        Kopfzeile: {
          „Inhaltstyp“: „Anwendung/x-www-form-urlencoded;Zeichensatz=utf-8“
        },
        Erfolg:Funktion (res){
          const Daten = res.Daten
          console.log('Erfolg',Daten);
          //etwas tun
        },
       Fehler:Funktion(res){
         console.log('fehlgeschlagen',res)
       }
        
      })
  }

Base64-Konvertierungscode für Hintergrund-Upload

öffentliche Leere upBase64() {
         System.out.println("======Bilder hochladen====");
         System.out.println(Datei);
        Json j = neues Json();
        String FilePath = ServletActionContext.getServletContext().getRealPath(Constants.IMGPATH+"/"+Constants.PHOTOPATH);  
        DateipfadDatei = neue Datei(Dateipfad);
        versuchen {
            // Wenn es IE ist, müssen Sie es auf text/html einstellen, andernfalls wird ein Popup-Fenster zum Herunterladen geöffnet // response.setContentType("text/html;charset=UTF-8");
            Antwort.setContentType("application/json;charset=UTF-8");

            String FileName = request.getParameter("Dateiname");
            Zeichenfolge FileData = request.getParameter("filedata");
            System.out.println(Dateiname+"**************"+Dateidaten);
            if (null == FileData || FileData.length() < 50) {
                j.setMsg("Upload fehlgeschlagen, Daten sind zu kurz oder nicht vorhanden");
                j.setSuccess(false);
            } anders {
                // Entfernen Sie die unangemessenen Daten am Anfang FileData = FileData.substring(30);
                FileData = URLDecoder.decode(FileData, "UTF-8");
                System.out.println("FileData="+FileData);
                byte[] data = FileUtil.decode(FileData);
                /*wenn (null == Dateiname || Dateiname.länge() < 1) {
                    Dateiname = System.currentTimeMillis() + ".jpg";
                }*/
                // In Datei schreiben FileOutputStream outputStream = new FileOutputStream(new File(PathFile,FileName)); 
                outputStream.write(Daten); 
                AusgabeStream.flush(); 
                outputStream.schließen(); 
                System.out.println(Dateiname+"**************"+Dateidaten);
                j.setMsg("Upload erfolgreich");
                j.setSuccess(true);
            }
        } Fang (Ausnahmefehler) {
            j.setMsg("Hochladen fehlgeschlagen");
            j.setSuccess(false);
            err.printStackTrace();
        }
        schreibeJson(j);
    }

Oben finden Sie eine ausführliche Erläuterung der offiziellen Gesichtsauthentifizierung des WeChat Mini-Programms. Weitere Informationen zur offiziellen Gesichtsauthentifizierung des WeChat Mini-Programms finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Codebeispiel für die Gesichtserkennungsfunktion des WeChat-Applet
  • Das WeChat-Applet implementiert einen Beispielcode für die Anmeldung mit Gesichtserkennung
  • Miniprogramm zur Implementierung der Gesichtserkennungsfunktion (Baidu AI)
  • Das WeChat-Applet implementiert die Gesichtserkennungsfunktion
  • WeChat-Applet implementiert Gesichtserkennung
  • PHP implementiert die Gesichtserkennungs-Anmeldefunktion des WeChat-Applets

<<:  Richtiger Einsatz von MySQL-Partitionstabellen

>>:  So verwenden Sie die Firewall-Iptables-Strategie zum Weiterleiten von Ports auf Linux-Servern

Artikel empfehlen

Ein tiefer Einblick in JavaScript-Promises

Inhaltsverzeichnis 1. Was ist Promise? 2. Warum g...

Detaillierte Erklärung des Lebenszyklus einer Angular-Komponente (I)

Inhaltsverzeichnis Überblick 1. Hook-Aufrufreihen...

Ändern Sie die Dateiberechtigungen (Eigentum) unter Linux

Linux und Unix sind Mehrbenutzer-Betriebssysteme,...

Implementierung des Pushens von Docker-Images zum Docker Hub

Nachdem das Image erfolgreich erstellt wurde, kan...

Reines CSS3 zum Erstellen eines Beispielcodes für Seitenwechseleffekte

Das, was ich vorher geschrieben habe, ist zu komp...

Detaillierte Erläuterung der Wissenspunkte zum MySQL Strict Mode

I. Erläuterung des strikten Modus Gemäß den Einsc...

Verschönerung der Dualsystem-Boot-Schnittstelle für Win10 + Ubuntu20.04 LTS

Effektanzeige Die eingebaute Boot-Oberfläche ist ...

Prozessdiagramm zur Implementierung der Zabbix WEB-Überwachung

Nehmen Sie als Beispiel die WEB-Schnittstelle von...