Access_token ist ein Berechtigungsnachweis während der Interaktion mit dem WeChat-Server. Jedes Mal, wenn der Client-Server aktiv mit dem WeChat-Server kommuniziert, muss er den access_token mitbringen, um seine Identität zu bestätigen. Wechat4j kapselt intern den Betrieb von access_token, einschließlich des Abrufens von access_token und der Implementierung des zentralen Kontrollservers für access_token.
access_token-Erwerb
Um access_token zu erhalten, können Sie die folgende Methode verwenden
String accessToken = TokenProxy.accessToken();
access_token Der zentrale Steuerungsserver
access_token hat ein tägliches Limit, sodass der Client-Server nicht jedes Mal ein neues access_token anfordern kann. Nach jeder Anfrage hat das access_token eine Ablaufzeit. Daher empfiehlt die WeChat-Plattform, dass Sie das Token regelmäßig über einen zentralen Steuerungsserver aktualisieren. Nach Erhalt können Sie es speichern, ohne das Token erneut anfordern zu müssen, da die Anzahl der access_token-Anfragen begrenzt ist. Dies hat nur zwei Vorteile:
Stellen Sie sicher, dass das access_token jeden Tag das Zugriffslimit nicht überschreitet, um den normalen Dienst sicherzustellen.
Verbessern Sie die Serviceleistung, indem Sie nicht mehr vor jeder Geschäftsanfrage eine Access_token-Erwerbsanfrage senden müssen.
wechat4j erhält access_token über den Proxy TokenProxy von access_token, und dieser Proxy kapselt den zentralen Steuerungsserver von access_token. Es gibt zwei Möglichkeiten, access_token zu speichern: Eine besteht darin, im Speicher zu speichern, und die andere darin, dauerhaft (Datenbank oder Datei) zu speichern. Der zentrale Steuerungsserver im Speichermodus wird von wehcat4j implementiert, und der Kunde muss keine Vorgänge ausführen. Wenn Kunden persistenten Speicher nutzen möchten, müssen sie den zentralen Steuerungsserver selbst definieren. Es gibt also die folgenden zwei zentralen Steuerungsserver:
Access_token Standard-Zentralsteuerungsserver
access_token benutzerdefinierter Zentralsteuerungsserver
Standard-Zentralsteuerungsserver
wechat4j Die Der standardmäßige zentrale Steuerungsserver befindet sich im Speichermodus, was bedeutet, dass das access_token im Speicher gespeichert wird, bis es abläuft, und dann ein neues anfordert, um es zu ersetzen. Die Klasse, die dem standardmäßigen zentralen Steuerungsserver entspricht, ist AccessTokenMemServer.
Vorteile: Der zentrale Steuerungsserver in diesem Modus ist hocheffizient und einfach zu bedienen, und Kunden müssen sich darüber keine Sorgen machen.
Nachteile: Es können keine Multi-Server-Cluster unterstützt werden. Wenn mehrere Server vorhanden sind, wird diese Methode nicht unterstützt.
Benutzerdefinierter zentraler Steuerungsserver
Wenn Sie das access_token in einer Datenbank oder Datei speichern müssen, müssen Sie einen benutzerdefinierten zentralen Steuerungsserver verwenden. Der benutzerdefinierte Server muss vom Kunden vervollständigt werden. Er muss die abstrakte Klasse CustomerServer erben und die Speicher- und Abfragemethoden ausführen. Gleichzeitig wird der benutzerdefinierte Server von einem Timer gesteuert und muss einen Listener konfigurieren.
Detaillierte Schritte zum Konfigurieren eines benutzerdefinierten access_token-Servers:
Um Ihre eigene Serverklasse zu erstellen, müssen Sie die CustomerServer-Klasse von wechat4j erben und die Methoden save und find implementieren. Ersteres dient zum Speichern des access_token Die Methode zum Abfragen von access_token aus der Datenbank kann eine SQL-Operation oder ähnliches sein.
public class CustomerAccessTokenServer extends CustomerServer{/* (non-Javadoc) * @see org.sword.wechat4j.token.DbAccessTokenServer#find() */@Overridepublic String find() { String accessToken = null; //执行数据库操作// String sql = "select cfgValue from cfg where cfg.cfgKey = 'access_token'";// accessToken = DBUtil.query(sql); return accessToken; }/* (non-Javadoc) * @see org.sword.wechat4j.token.DbAccessTokenServer#save() */@Overridepublic boolean save(Token accessToken) { //如果没有需要插入,如果有的就更新,假设已经有了数据库配置项// String sql = "update cfg set cfg.cfgValue=" + accessToken.getToken() + // " where cfg.cfgKey= 'access_token'";// DBUtil.execute(sql); return true; } }
Konfigurieren Sie das Element wechat.accessToken.server.class in der Konfigurationsdatei wechat4j.properties und fügen Sie den Pfad zur neu erstellten Serverklasse hinzu.
wechat.accessToken.server.class=com.sample.wechat.CustomerAccessTokenServer
Konfigurieren Sie es im Web .xml access_token-Listener für wechat4j. Der Code lautet wie folgt:
<listener> <listener-class>org.sword.wechat4j.token.TokenListener</listener-class></listener>
Sie können Ihren eigenen Datenbank-Access_token-Server durch die oben genannten drei Schritte konfigurieren. Auf diese Weise aktualisiert der zentrale Steuerungsserver das access_token regelmäßig und speichert es dann in der Datenbank. Wenn das access_token in der Geschäftslogik verwendet wird, werden die Daten über einen Proxy aus der Datenbank abgerufen.
Die geplante Aktualisierungsaufgabe wird 200 Sekunden im Voraus ausgeführt, um zu verhindern, dass das neue access_token nach dem Ablaufdatum des alten access_token abläuft.
Weitere Artikel zur Java WeChat-Entwicklung (wechat4j) - access_token Central Control Server-Implementierung finden Sie auf der chinesischen PHP-Website!