WeChat Mini-Programm-Benutzerautorisierung zum Abrufen einer Mobiltelefonnummer (getPhoneNumber)

WeChat Mini-Programm-Benutzerautorisierung zum Abrufen einer Mobiltelefonnummer (getPhoneNumber)

Vorwort

Das Miniprogramm verfügt über eine sehr praktische API zum Abrufen von Benutzern, nämlich zum Abrufen der an WeChat gebundenen Mobiltelefonnummer des Benutzers über getPhoneNumber. Eines müssen wir alle beachten: WeChat konzentriert sich mittlerweile auf die Benutzererfahrung. Einige Methoden müssen vom Benutzer aktiv ausgelöst werden, bevor sie aufgerufen werden können, z. B. „getPhoneNumber“.

Umsetzungsideen:

1. Holen Sie sich den Code über wx.login, um die OpenID und den Sitzungsschlüssel des Benutzers abzurufen

2. Holen Sie sich verschlüsselte Daten über getPhoneNumber, iv

3. Fordern Sie das Backend auf, die Mobiltelefonnummer des Benutzers über die Parameter [encryptedData], [iv] und [sessionKey] zu entschlüsseln und abzurufen.

Direkt auf der Trockenware:

1. Der Benutzer klickt auf die Schaltfläche, um die Mobiltelefonnummer des Benutzers abzurufen

<button Klasse='pop_btn' plain="true"

open-type='getPhoneNumber' bindgetphonenumber="getPhoneNumber">Telefonnummer des Benutzers abrufen</button>

2. Popup-Autorisierungsbild:

3. Erhalten Sie die Handynummer durch Entschlüsselung

Direkt zum Code:

wxlogin: function() { //Holen Sie sich die OpenID und den Sitzungsschlüssel des Benutzers
  var das = dies;
  wx.login({
    //Code abrufen Verwenden Sie die von wx.login erhaltenen Anmeldeinformationen, um sie gegen OpenID einzutauschen
    Erfolg: (res) = >{
      wx.Anfrage({
        Methode: "GET",
        URL: „https://xxxwx/wxlogin.do“,
        Daten: {
          Code: res.code,
          Anwendungs-ID: "appIdSbcx",
          Anwendungsschlüssel: "appKeySbcx"

        },
        Kopfzeile: {
          'content-type': 'application/json' // Standardwert},
        Erfolg: (res) = >{
          konsole.log(res);
          dass.setData({
            Sitzungsschlüssel: res.data.session_key

          });
        }
      });
    }
  });
}

getPhoneNumber: function(e) { //Klicken Sie auf die Schaltfläche „Telefonnummer abrufen“ var that = this;
  wx.checkSession({
    Erfolg: Funktion() {
      console.log(e.detail.errMsg)
      console.log(e.detail.iv)
      console.log(e.detail.verschlüsselteDaten)
      var ency = e.detail.encryptedData;
      var iv = e.detail.iv;
      var sessionk = dieser.Daten.SessionKey;
      if (e.detail.errMsg == 'getPhoneNumber:fail Benutzer deny') {
        dass.setData({
          Modalstatus: wahr
        });

      } else { //Autorisierung zustimmen wx.request({
          Methode: "GET",
URL: „https://xxx/wx/deciphering.do“,
          Daten: {
            Daten verschlüsseln: Verschlüsselung,
            iv-Daten: iv,
            Sitzungsschlüssel:sessionk
          },
          Kopfzeile: {
            'content-type': 'application/json' // Standardwert},
          Erfolg: (res) = >{
            console.log("Entschlüsselung erfolgreich~~~~~~~Speichern Sie die entschlüsselte Nummer lokal~~~~~~~~");
            konsole.log(res);
            var Telefon = res.data.phoneNumber;
            konsole.log(Telefon);
          },
          Fehler: Funktion (Res) {
            console.log("Entschlüsselung fehlgeschlagen~~~~~~~~~~~~~~");
            konsole.log(res);
          }
        });
      }

    },

    fehlgeschlagen: Funktion() {
      console.log("session_key ist abgelaufen, Sie müssen den Anmeldevorgang erneut ausführen");
      that.wxlogin(); //Erneut anmelden}
  });
}

Hintergrundcode:

/**
* Entschlüsseln und die Mobiltelefonnummer des Benutzers abrufen * @param encrypdata
* @param ivdata
* @param Sitzungsschlüssel
* @param Anfrage
* @zurückkehren
* @throws Ausnahme 
*/
@RequestMapping(Wert = "Entschlüsselung", Methode = RequestMethod.GET)
öffentliche @ResponseBody String-Entschlüsselung (String-Verschlüsselungsdaten, 
String ivdata, String Sitzungsschlüssel,
HttpServletRequest-Anfrage) {

    byte[] verschlüsselnDaten = Base64.decode(verschlüsselnDaten); 
    byte[] ivData = Base64.decode(ivdata); 
    byte[] Sitzungsschlüssel = Base64.decode(Sitzungsschlüssel); 
    Zeichenfolge str="";
versuchen {
str = entschlüsseln(Sitzungsschlüssel, ivData, verschlüsselnDaten);
} Fang (Ausnahme e) {
// TODO Automatisch generierter Catch-Block
e.printStackTrace();
}
    System.out.println(str); 
    gibt str zurück;

}
öffentliche statische String-Entschlüsselung (Byte[] Schlüssel, Byte[] iv, Byte[] encData) löst Ausnahme aus { 
    AlgorithmParameterSpec ivSpec = neue IvParameterSpec(iv); 
    Verschlüsselung cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); 
    SecretKeySpec keySpec = neuer SecretKeySpec(Schlüssel, "AES"); 
    cipher.init(Cipher.DECRYPT_MODE, Schlüsselspezifikation, ivSpec); 
    //Entschlüsselten String analysieren return new String(cipher.doFinal(encData),"UTF-8"); 
  }

Zusammenfassen

Dies ist das Ende dieses Artikels über die Benutzerberechtigung des WeChat Mini-Programms zum Abrufen von Mobiltelefonnummern. Weitere relevante Inhalte zur Benutzerberechtigung des WeChat Mini-Programms zum Abrufen von Mobiltelefonnummern finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den unten stehenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Eine elegante Möglichkeit, die Autorisierungsanmeldung für WeChat-Applets zu handhaben
  • springboot+jwt+springSecurity WeChat Applet-Autorisierungs-Login-Problem
  • Implementierung der WeChat-Applet-Autorisierung wx.getUserInfo zum Abrufen von Benutzerinformationen (Avatar, Spitzname)
  • Implementierung der Anmeldeberechtigung für das Uni-App WeChat-Applet
  • Beispiel für die Standortbestimmung und Aufzeichnung von Benutzerhintergrunddaten des WeChat Mini-Programms und für Autorisierungs- und Anforderungsanfragen

<<:  Tutorial zur Installation von Ubuntu Server in Vmware

>>:  VMWare Linux MySQL 5.7.13 Installations- und Konfigurationstutorial

Artikel empfehlen

Warum MySQL-Datenbanken NULL so weit wie möglich vermeiden

Viele Tabellen in MySQL enthalten Spalten, die NU...

So legen Sie die Umgebungsvariable PATH im Linux-System fest (3 Methoden)

1. In Windows-Systemen erfordern viele Softwarein...

Regeln für die Verwendung gemeinsamer MySQL-Indizes

Ein gemeinsamer Index wird auch als zusammengeset...

Detailliertes Tutorial zur Installation von phpMyAdmin unter Ubuntu 18.04

Wir werden phpMyAdmin installieren, damit es mit ...

Uniapp implementiert Beispielcode für die Anmeldung mit DingTalk-Scancode

Da Uniapp nicht über eine autorisierte DingTalk-A...

vue + springboot realisiert den Login-Bestätigungscode

In diesem Artikelbeispiel wird der spezifische Co...

Detaillierte Zusammenfassung der Übermittlungsmethoden für Webformulare

Sehen wir uns zunächst verschiedene Möglichkeiten...

Master-Slave-Synchronisationskonfiguration der Mysql-Datenbank

Inhaltsverzeichnis Mysql Master-Slave-Synchronisi...

Reduzieren Sie die Speicher- und CPU-Auslastung durch die Optimierung von Webseiten

Manche Webseiten erscheinen möglicherweise nicht g...

Teilen Sie 10 der neuesten Web-Frontend-Frameworks (Übersetzung)

In der Welt der Webentwicklung sind Frameworks wei...

Installieren Sie Docker für Windows unter Windows 10 Home Edition

0. Hintergrund Hardware: Xiaomi Notebook Air 13/I...