Maison >Java >javaDidacticiel >Développement Java WeChat (wechat4j) - implémentation du serveur de contrôle central access_token

Développement Java WeChat (wechat4j) - implémentation du serveur de contrôle central access_token

高洛峰
高洛峰original
2017-02-13 16:03:432387parcourir

Access_token est un identifiant lors de l'interaction avec le serveur WeChat. Chaque fois que le serveur client communique activement avec le serveur WeChat, il doit apporter le access_token pour confirmer son identité. Wechat4j encapsule en interne le fonctionnement d'access_token, y compris l'obtention d'access_token et la mise en œuvre du serveur de contrôle central access_token.

acquisition access_token

Pour obtenir access_token, vous pouvez utiliser la méthode suivante

String accessToken = TokenProxy.accessToken();

access_token Le serveur de contrôle central

access_token a une limite quotidienne, donc le serveur client ne peut pas demander un nouveau access_token à chaque fois. Après chaque demande, le access_token a un délai d'expiration. Par conséquent, la plateforme WeChat vous recommande d'utiliser un serveur de contrôle central pour actualiser régulièrement le token. Après l'avoir obtenu, vous pouvez le sauvegarder sans avoir à redemander le token, car le nombre de requêtes access_token est limité. Il n'y a que deux avantages à faire cela :

Assurez-vous que le access_token ne dépassera pas la limite d'accès chaque jour, garantissant ainsi le service normal.

Améliorez les performances du service en éliminant le besoin d'envoyer une demande d'acquisition de access_token avant chaque demande commerciale.

wechat4j obtient access_token via le proxy TokenProxy d'access_token, et ce proxy encapsule le serveur de contrôle central d'access_token. Il existe deux façons de sauvegarder access_token, l'une consiste à enregistrer en mémoire et l'autre à enregistrer de manière persistante (base de données ou fichier). Le serveur de contrôle central en mode stockage mémoire est implémenté par wehcat4j, et le client n'a besoin d'effectuer aucune opération. Si les clients souhaitent utiliser le stockage persistant, ils doivent définir eux-mêmes le serveur de contrôle central. Il existe donc les deux serveurs de contrôle central suivants :

serveur de contrôle central par défaut access_token

serveur de contrôle central personnalisé access_token

serveur de contrôle central par défaut

wechat4j Le serveur de contrôle central par défaut est en mode mémoire, ce qui signifie que le access_token est stocké en mémoire jusqu'à son expiration, puis en demande un nouveau pour le remplacer. La classe par défaut correspondant au serveur de contrôle central est AccessTokenMemServer.

Avantages : Le serveur de contrôle central dans ce mode est très efficace et facile à utiliser, et les clients n'ont pas à s'en soucier.

Inconvénients : elle ne peut pas prendre en charge les clusters multi-serveurs. S'il existe plusieurs serveurs, cette méthode ne sera pas prise en charge.

Serveur de contrôle central personnalisé

Si vous devez enregistrer le access_token dans une base de données ou un fichier, vous devez utiliser un serveur de contrôle central personnalisé. Le serveur personnalisé doit être complété par le client. Il doit hériter de la classe abstraite CustomerServer et compléter les méthodes de sauvegarde et de requête. En même temps, le serveur personnalisé est piloté par un minuteur et doit configurer un écouteur.
Étapes détaillées pour configurer un serveur access_token personnalisé :

Pour créer votre propre classe de serveur, vous devez hériter de la classe CustomerServer de wechat4j et implémenter les méthodes save et find. La première consiste à enregistrer le access_token sur. la base de données, et cette dernière est La méthode d'interrogation de access_token à partir de la base de données peut être une opération SQL ou similaire.

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;
}
}

Configurez l'élément wechat.accessToken.server.class dans le fichier de configuration wechat4j.properties et ajoutez le chemin d'accès à la classe de serveur nouvellement créée

 wechat.accessToken.server.class=com.sample.wechat.CustomerAccessTokenServer

Configurez-le dans le Web Écouteur access_token .xml pour wechat4j. Le code est le suivant :

<listener>
    <listener-class>org.sword.wechat4j.token.TokenListener</listener-class></listener>

Vous pouvez configurer votre propre serveur access_token de base de données en suivant les trois étapes ci-dessus. De cette manière, le serveur de contrôle central actualise régulièrement le access_token puis l'enregistre dans la base de données. Lorsque le access_token est utilisé dans la logique métier, les données sont obtenues de la base de données via un proxy.
La tâche d'actualisation planifiée s'exécutera 200 secondes à l'avance pour empêcher le nouveau access_token d'expirer après la date d'expiration de l'ancien access_token.

Pour plus d'articles sur le développement Java WeChat (wechat4j) - implémentation du serveur de contrôle central access_token, veuillez faire attention au site Web PHP chinois !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn