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    

Artikel empfehlen

Detaillierte Erklärung des Linux-Texteditors Vim

Vim ist ein leistungsstarker Vollbild-Texteditor ...

Erläuterung der JavaScript-Funktionssyntax

Inhaltsverzeichnis 1. Gewöhnliche Funktionen 2. P...

Schauen wir uns einige leistungsstarke Operatoren in JavaScript an

Inhaltsverzeichnis Vorwort 1. Null-Koaleszenzoper...

So installieren und implementieren Sie MySQL 8.0 unter CentOS8

Die offizielle Version 8.0.11 von MySQL 8 wurde v...

So verwenden Sie Docker zum Erstellen eines privaten pypi-Repositorys

1. Konstruktion 1. Bereiten Sie die Datei htpassw...

Lösung für das Problem mit verstümmelten chinesischen MySQL-Zeichen

1. Die chinesischen verstümmelten Zeichen erschei...

Beispiel zum Festlegen der pseudostatischen WordPress-Eigenschaft in Nginx

Zitat aus Baidus Erklärung zu Pseudostatik: Pseud...

HTML-Tutorial: Sammlung häufig verwendeter HTML-Tags (5)

Diese eingeführten HTML-Tags entsprechen nicht un...

Detailliertes Tutorial zur Verwendung des Befehls xargs unter Linux

Hallo zusammen, ich bin Liang Xu. Sind Sie bei de...

MySQL 8.0.13 Download- und Installations-Tutorial mit Bildern und Text

MySQL ist die am häufigsten verwendete Datenbank....

Detailliertes Tutorial zur Installation und Konfiguration von Nginx unter Centos7

Hinweis: Der grundlegende Verzeichnispfad für die...