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

Detaillierte Erklärung zu Drag-Time und Drag-Case in JavaScript

Inhaltsverzeichnis DragEvent-Schnittstelle Übersi...

Wissen Sie, wie Sie das Flash-Wmode-Attribut in Webseiten verwenden?

Bei der Webentwicklung kann es vorkommen, dass Fl...

Implementierung des Tomcat-Bereitstellungsprojekts und Integration mit IDEA

Inhaltsverzeichnis 3 Möglichkeiten zum Bereitstel...

Warum wird in React nicht empfohlen, einen Index als Schlüssel zu verwenden?

1. Vergleichen Sie den alten virtuellen DOM mit d...

So verwenden Sie die MySQL-Indexzusammenführung

Die Indexzusammenführung ist ein intelligenter Al...

Design-Story: Der Wachmann, der sich Nummernschilder nicht merken kann

<br />Um die Fahrzeuge zu regeln, die in die...

Tutorial zur Docker-Installation in einer Linux-Umgebung

1. Installationsumgebung Docker unterstützt die f...

Die Fallstricke bei der Bereitstellung von Angular-Projekten in Nginx

Wenn man online nach Methoden sucht, um Angular -...

Hyperlink-Tag für HTML-Webseiten

Lernprogramm zum Hyperlink-Tag einer HTML-Webseit...

Häufige JavaScript-Speicherfehler und Lösungen

Inhaltsverzeichnis 1. Zeitüberwachung 2. Ereignis...

Tutorial zur Installation von MySQL8 auf Centos7

Neue Funktionen in MySQL 8: Meine persönliche Mei...