TOKEN Timer-Aktualisierung1. HintergrundEntwickler, die die API-Funktionen der öffentlichen Plattform verwendet haben, werden mit dem access_token sicherlich vertraut sein. Es ist wie ein Schlüssel, der die Tür Ihres Hauses öffnet. Solange Sie ihn haben, können Sie die meisten API-Funktionen der öffentlichen Plattform nutzen. Daher ist die Verwendung des Zugriffstokens für Entwickler besonders wichtig. Im täglichen Betrieb von API-Schnittstellen stoßen wir häufig auf verschiedene Fragen: Warum ist mein access_token plötzlich ungültig? Warum ist der Zugriffstoken, den ich gerade erhalten habe, nach 10 Minuten abgelaufen? Als Antwort auf diese Fragen bieten wir eine Designlösung für access_token an, die Entwicklern helfen soll, die Verwendung von access_token zu verstehen. Informationen zum Abrufen des Zugriffstokens finden Sie in der offiziellen Dokumentation der öffentlichen Plattform: auth.getAccessToken, Get Access token 2. Internes Design des access_token2.1 Aktualität des access_tokenWie wir alle wissen, wird access_token durch App-ID und Appsecret generiert. Die Schritte der Innenarchitektur sind wie folgt: (1) Der Entwickler verwendet https für die Anforderung: GET https://API.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET und übergibt die Parameter appid und apppsecret. (2) Das öffentliche Backend der Plattform überprüft, ob die App-ID und der Hash (Appsecret) mit dem Speicher übereinstimmen. Wenn sie übereinstimmen, wird basierend auf dem aktuellen Zeitstempel ein neuer Zugriffstoken generiert. (3) Wenn ein neuer Zugriffstoken generiert wird, wird der Ablaufzeitstempel des alten Zugriffstokens auf den aktuellen Zeitstempel aktualisiert. (4) Geben Sie den neuen Zugriffstoken an den Entwickler zurück. Hier ist ein Diagramm, das den Vorgang des Wechsels zwischen alten und neuen Token veranschaulicht: Im obigen Diagramm sind einige wichtige Punkte zu beachten: (1) Die öffentliche Plattformspeicherschicht speichert nur die neuen und alten Zugriffstoken. Dies bedeutet, dass, wenn der Entwickler die Schnittstelle dreimal aufruft, der früheste Zugriffstoken sofort ungültig wird. (2) Obwohl die Ablaufzeit des alten access_token nach der Anforderung eines neuen access_token auf die aktuelle Zeit aktualisiert wird, wird es nicht sofort ungültig. Informationen zum Prinzip finden Sie unter [2.2 Allmähliches Ablaufen des access_token]. (3) Aus Gründen der Informationssicherheit speichert die öffentliche Plattform das Appsecret nicht im Klartext, sondern nur die App-ID und den Hash-Wert des Appsecret. Daher müssen Entwickler die App-Geheimnisse sorgfältig aufbewahren. Wenn der Verdacht besteht, dass das Appsecret durchgesickert ist, müssen Sie sich rechtzeitig bei mp.weixin.qq.com anmelden, um das Appsecret zurückzusetzen. 2.2 Allmähliches Ablaufen des access_tokenAus [Aktualität des Zugriffstokens] wissen wir, dass, wenn ein Entwickler einen neuen Zugriffstoken anfordert, die Ablaufzeit des alten Zugriffstokens auf die aktuelle Zeit aktualisiert wird, dieser jedoch nicht sofort ungültig wird, da die öffentliche Plattform [5 Minuten Pufferzeit für den Wechsel zwischen dem neuen und dem alten Zugriffstoken] bereitstellt, weshalb er auch Zugriffstoken genannt wird. allmähliches Versagen. Das Umsetzungsprinzip lautet:
Im obigen Diagramm sind einige wichtige Punkte zu beachten: (1) Aufgrund von Unterschieden bei der Gerätezeitsynchronisierung können Entwickler auf Situationen stoßen, in denen einige Anfragen an die API-Schnittstelle mit dem alten Zugriffstoken erfolgreich sind, während andere fehlschlagen. Es wird Entwicklern empfohlen, den neuen Zugriffstoken so bald wie möglich nach Erhalt zu verwenden. (2) Durch das Verständnis der beiden Diagramme wird klar, dass der Zugriffstoken für Entwickler eine sehr wichtige Schnittstelle ist, die nicht beliebig angepasst werden kann. Es wird empfohlen, dass Entwickler den Zugriffstoken einheitlich verwalten, um Mehrfachanforderungen zu vermeiden, die dazu führen können, dass der Zugriffstoken ungültig wird. 3. Einheitliche Verwaltung von access_token Senden Sie die Aktualisierung von Das folgende Beispiel zeigt die einheitliche Verwaltung des index.js fordert Bei anderen Terminals müssen Sie const cloud = erfordern('wx-server-sdk') cloud.init({ Umgebung: cloud.DYNAMIC_CURRENT_ENV }) const Zeitutil = erforderlich('./Zeitutil'); // Konfigurationselemente, die geändert werden müssen const APPSECRET = '' const axios = erfordern('axios'); const db = cloud.database(); // Regelmäßig aktualisieren und Konfigurationsinformationen abrufen const CONFIG = 'cloud-token'; // Holen Sie sich das Token const URL = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={APPID}&secret={APPSECRET}' Funktion getAccessToken(APPID,APPSECRET){ lassen Sie url = URL; url = url.ersetzen('{APPID}',APPID) url = url.ersetzen('{APPSECRET}',APPSECRET) returniere neues Promise(Funktion(auflösen,ablehnen){ axios.get(url).then(Funktion (Antwort) { console.log(Antwort); Lösung (Antwort) }) .catch(Funktion (Fehler) { konsole.log(Fehler); ablehnen(Fehler) }); }) } // Cloud-Funktionseintrag Funktion exports.main = async (Ereignis, Kontext) => { const wxContext = cloud.getWXContext() // Automatisches Abrufen der aktuellen Anwendungs-APPID var APPID = wxContext.APPID; returniere neues Promise(Funktion(auflösen,ablehnen){ getAccessToken(APPID,APPSECRET).dann(async res=>{ Konsole.log(res) Lassen Sie access_token = res.data.access_token; lass ans = warte auf db.collection(CONFIG).doc('access_token').set({ Daten:{ Wert: Zugriffstoken, _updateTime:timeutil.TimeCode() } }) Entschlossenheit(en) }) }) } config.json Timer-Trigger Wird stündlich ausgelöst { "Auslöser": [ { "Name": "meinTrigger", "Typ": "Timer", "Konfiguration": "0 0 * * * * *" } ] } timeutil.js Zeittool-Klasse Funktion TimeCode() { var date = neues Datum(); var Jahr = Datum.getFullYear() var Monat = date.getMonth() + 1 var Tag = Datum.getDate() var Stunde = Datum.getHours() var minute = date.getMinutes() var Sekunde = date.getSeconds() return [Jahr, Monat, Tag].map(formatNumber).join('-') + ' ' + [Stunde, Minute, Sekunde].map(formatNumber).join(':') } //Datum abrufen Funktion _formatTime(time) { var Datum = Zeit.getFullYear() + 'Jahr' + Zeit.getMonth() + 'Monat' + Zeit.getDate() + 'Tag' var ftime = time.getHours() + 'Stunden' + time.getMinutes() + 'Minuten' + time.getSeconds() + 'Sekunden' Rückflugdatum + ftime; } Funktion TimeCodeYmd(){ var date = neues Datum(); var Jahr = Datum.getFullYear() var Monat = date.getMonth() + 1 var Tag = Datum.getDate() return [Jahr, Monat, Tag].map(formatNumber).join('-'); } Funktion FormatNummer(n) { n = n.toString() gibt n[1] zurück? } module.exports={ Zeitcode, ZeitcodeYmd } Wenn Verwendung der Access_token-Abfrage const TOKEN = "Cloud-Token"; //Zugriffstoken abrufen versuchen { lass tres = warte auf db.collection(TOKEN).doc('access_token').get(); Zugriffstoken = tres.data.value; console.log(Zugriffstoken) } Fehler abfangen { console.log('--Kein Token-Datensatz--') zurückkehren { Fehlercode: -1, errMsg:'Es gibt keine TOKEN-Informationen in der Datenbank' } } Referenzdokumentation【1】Internes Design des Zugriffstokens für die öffentliche Plattform/Miniprogramm-Server-API | WeChat Open Community (qq.com) 【2】auth.getAccessToken | WeChat Open-Dokumentation (qq.com) 【3】Zusammenfassung der Fähigkeiten zur Entwicklung von WeChat-Miniprogrammen (Teil 3) - Zeiteffiziente Datenaktualisierung und -speicherung bei der Cloud-Entwicklung (Access_Token usw.) - Kindear - cnblogs.com Damit ist dieser Artikel über die Implementierung einer einheitlichen Verwaltung von Zugriffstokens bei der Entwicklung kleiner Programme abgeschlossen. Weitere Informationen zur einheitlichen Verwaltung von Zugriffstokens bei kleinen Programmen finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Schritte zum Installieren von Superset unter dem Win10-System
>>: Tiefgreifendes Verständnis von globalen Sperren und Tabellensperren in MySQL
Laden Sie das Image herunter (optionaler Schritt,...
Es gibt viele Server, die statische Websites host...
In diesem Artikel wird der spezifische Code von J...
SSH steht für Secure Shell, ein sicheres Übertrag...
Inhaltsverzeichnis Vom Vater zum Sohn: Sohn zum V...
Konzepteinführung: Wir wissen, dass das Redo-Log ...
Inhaltsverzeichnis Problembeschreibung 1. Basislö...
Manchmal benötigen unsere Seiten Eingabeaufforder...
Vue-Methoden und -Eigenschaften 1. Methoden Verwe...
Nachdem ich meinen letzten Artikel „Zen Coding: Ei...
Die aktuelle Anforderung lautet: Es gibt eine Sch...
Inhaltsverzeichnis Was ist ein Ereignis Ein einfa...
In diesem Artikel werden anhand von Beispielen di...
Inhaltsverzeichnis 1. Verständnis der Gleichheits...
Ich habe lange damit gekämpft und nach einiger Suc...