WeChat-Applet zum Abrufen eines Schrittdatensatzes für Mobiltelefonnummern

WeChat-Applet zum Abrufen eines Schrittdatensatzes für Mobiltelefonnummern

Vorwort

Kürzlich bin ich bei der Entwicklung eines kleinen Programms auf ein solches Problem gestoßen: Wenn der Benutzer auf Autorisierung klickt und versucht, die Mobiltelefonnummer zu entschlüsseln, schlägt dies beim ersten Mal fehl, beim zweiten Mal gelingt es jedoch. Nach einigem Nachdenken habe ich endlich eine vernünftigere Lösung gefunden. Ich zeichne sie hier auf und fasse sie zusammen, in der Hoffnung, dass sie allen helfen kann.

Anforderungsbeschreibung

Nachdem der Benutzer auf die Schaltfläche „Telefon abrufen“ geklickt hat, wird die vom Benutzer in WeChat festgelegte Telefonnummer entschlüsselt und im Eingabefeld für die Kontakttelefonnummer angezeigt.

Spezifischer Code

      <Ansichtsklasse="cu-form-group">
            <view class="title text-black">Kontakttelefonnummer</view>
            <input class="radius" name="mobile" placeholder="Bitte geben Sie Ihre Kontaktnummer ein" value="{{detail.mobile}}" bindinput="onInputMobile"></input>
            <button bindgetphonenumber="getPhoneNumber" class="cu-btn line-blue sm" openType="getPhoneNumber">Telefonnummer abrufen</button>
        </Ansicht>

Zuerst benötigen Sie die Applet-Schaltflächenkomponente und setzen openType="getPhoneNumber"

    beim Laden: asynchrone Funktion () {
        dies.getSessionKey()
    },
    async getSessionKey() {
        const { code } = warte auf wx.login()
        const res = warte auf Index.getSessionKey({
            Code
        })
        wenn (res.code == 1) {
            dies.setData({
                Sitzungsschlüssel: res.data
            })
        }
    },
    getPhoneNumber: asynchrone Funktion (e) {
        wenn (e.detail.errMsg === "getPhoneNumber:ok") {
            const res = warte auf Index.getPhone({
                iv: e.detail.iv,
                verschlüsselteDaten: e.detail.verschlüsselteDaten,
                Sitzungsschlüssel: diese.Daten.Sitzungsschlüssel
            })
            wenn (res.err == 0) {
                wx.showToast({
                    Titel: „Das Netzwerk ist etwas instabil. Klicken Sie hier, um es erneut zu versuchen“,
                    Symbol: „keine“
                })
                zurückkehren
            }
            const detail = diese.Daten.detail
            detail.mobile = res.err.phoneNumber
            dies.setData({
                Detail
            })
        } sonst wenn (e.detail.errMsg === "getPhoneNumber:fail user deny") {
            wx.showModal({
                Titel: 'Tipps',
                Inhalt: „Sie haben die Autorisierung abgelehnt, bitte klicken Sie erneut und autorisieren Sie“,
                showCancel: false,
                Bestätigungstext: "Verstanden"
            })
        }
    },

Holen Sie sich den Anmeldecode während des onLoad-Lebenszyklus und senden Sie den Code an den Server, um den Sitzungsschlüssel abzurufen

Bitte beachten Sie die offizielle Dokumentation des Miniprogramms, um den Sitzungsschlüssel auf der Serverseite zu erhalten.

Nachdem der Benutzer auf die Schaltfläche „Telefon abrufen“ geklickt hat, werden der Sitzungsschlüssel und die erhaltenen iv- und verschlüsselten Daten zur Entschlüsselung an den Server gesendet.

Auf diese Weise können Sie die Mobiltelefonnummer des Benutzers ermitteln.

Grube

Unsere bisherige Lösung bestand darin, wx.logon() direkt in der Funktion getPhoneNumber aufzurufen, nachdem der Benutzer auf die Schaltfläche „Telefonnummer abrufen“ geklickt hatte, und den Code, iv und encryptedData an den Server zu senden. Der Server verwendete den Code zunächst, um den Sitzungsschlüssel abzurufen, und kombinierte ihn dann mit iv und encryptedData zur Entschlüsselung. Auf diese Weise würde die erste Entschlüsselung fehlschlagen, und ein erneutes Klicken auf die Schaltfläche zum Aufrufen der Entschlüsselungsschnittstelle würde erfolgreich sein. Und die Situation wird alle 5–6 Minuten erneut auftreten.

Der Aufruf von wx.checkSession(Object object) zur Überprüfung, ob der Anmeldestatus abgelaufen ist, ist immer erfolgreich.

erraten

Später habe ich darüber nachgedacht, warum ich wx.login nicht in der Funktion getPhoneNumber aufrufen kann, damit der Server den Code gegen session_key eintauschen und ihn anschließend mit iv kombinieren kann, um encryptedData zu entschlüsseln? Wie wäre es, wx.login in onLoad einzufügen, um den Sitzungsschlüssel zu erhalten?

Ich denke, der Session_key des WeChat-Servers wird aktualisiert, wenn wx.login aufgerufen wird. Wenn wx.login direkt in getPhoneNumber aufgerufen wird, hat der WeChat-Server möglicherweise keine Zeit, ihn zu aktualisieren, und der Server verwendet ihn zur Entschlüsselung. Der beim letzten Mal abgelaufene Session_key wird weiterhin zur Entschlüsselung verwendet, sodass er erst nach dem zweiten Mal erfolgreich ist. Wenn wx.login in onload platziert wird, kann session_key rechtzeitig abgerufen werden.

Zusammenfassen

Dies ist das Ende dieses Artikels über die Fallstricke beim Erhalt von Mobiltelefonnummern über WeChat-Miniprogramme. Weitere relevante Inhalte zum Erhalt von Mobiltelefonnummern über WeChat-Miniprogramme finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den verwandten Artikeln weiter unten. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • So erhalten Sie die Mobiltelefonnummer durch Benutzerautorisierung im WeChat Mini-Programm (getPhoneNumber)
  • Das WeChat-Applet erhält eine Mobiltelefonnummer, um die Benutzeranmeldefunktion zu autorisieren
  • WeChat Mini-Programm: Benutzerautorisierung, Standortautorisierung und Erhalt von WeChat-gebundenen Mobiltelefonnummern
  • Zusammenfassung der Funktionen des WeChat-Applets (Handynummernüberprüfung*, Passwortüberprüfung*, Bestätigungscode abrufen*)
  • So erhalten Sie die Mobiltelefonnummer des Benutzers im WeChat Mini-Programm
  • Das WeChat-Applet getPhoneNumber erhält die Mobiltelefonnummer des Benutzers
  • WeChat-Applet erhält Benutzerinformationen und Mobiltelefonnummer (Backend TP5.0)
  • WeChat-Applet-Entwicklung: Abrufen der Mobiltelefonnummer des Benutzers (Entschlüsselung der PHP-Schnittstelle)
  • Das WeChat-Applet bindet die Mobiltelefonnummer ein, um die Funktion zum Abrufen eines Bestätigungscodes zu erhalten
  • WeChat-Applet zum Abrufen des Beispielcodes zur JavaScript-Entschlüsselung einer Mobiltelefonnummer – detaillierte Erläuterung

<<:  Der Unterschied zwischen den Feldtypen char, varchar und Text in MySQL

>>:  Sollten nullbare Felder in MySQL auf NULL oder NOT NULL gesetzt werden?

Artikel empfehlen

Vue realisiert einen dynamischen Fortschrittsbalkeneffekt

In diesem Artikelbeispiel wird der spezifische Co...

Übersicht über die Zeitkonfiguration unter Linux-System

1. Zeitarten werden unterteilt in: 1. Netzwerkzei...

SQL-Fuzzy-Abfragebericht: ORA-00909: Lösung: Ungültige Anzahl von Parametern

Bei Verwendung einer Oracle-Datenbank für Fuzzy-A...

Tutorial zum Bereitstellen von JDK und Tomcat auf CentOS7 ohne Schnittstelle

1. Installieren Sie xshell6 2. Stellen Sie eine S...

Beispielcode zur Implementierung eines Hintergrundunschärfeeffekts mit CSS

Ist es der unten gezeigte Effekt? Wenn ja, lesen ...

Mehrere Möglichkeiten zur manuellen Implementierung von HMR in Webpack

Inhaltsverzeichnis 1. Einleitung 2. GitHub 3. Gru...

So entwickeln Sie eine Progressive Web App (PWA)

Inhaltsverzeichnis Überblick Erfordern URL der An...

JavaScript implementiert das Klassenlotterie-Applet

In diesem Artikel wird der spezifische JavaScript...

Tutorial zur Installation von MySQL auf Alibaba Cloud Centos 7.5

Es scheint, dass die MySQL-Server-Datei zur norma...

Methode und Optimierungsprinzip für langsame MySQL-Abfragen

1. Zum Vergleich der Datumsgröße muss das an XML ...