ホームページ  >  記事  >  Java  >  Java WeChat 開発 (wechat4j) - access_token 中央制御サーバーの実装

Java WeChat 開発 (wechat4j) - access_token 中央制御サーバーの実装

高洛峰
高洛峰オリジナル
2017-02-13 16:03:432324ブラウズ

Access_token は、WeChat サーバーとの対話中の認証情報です。クライアント サーバーが WeChat サーバーと積極的に通信するたびに、その身元を確認するために access_token を取得する必要があります。 Wechat4j は、access_token の取得と access_token 中央制御サーバーの実装を含む、access_token の操作を内部的にカプセル化します。

access_token取得

access_tokenを取得するには、以下のメソッドを使用できます

String accessToken = TokenProxy.accessToken();

access_token集中管理サーバー

access_tokenには1日あたりの制限があるため、クライアントサーバーは使用できませんすべてのリクエストが新しい access_token をリクエストするたびに、access_token には有効期限があります。したがって、WeChat プラットフォームでは、access_token リクエストの数が制限されているため、トークンを取得した後、再度トークンをリクエストすることなく保存できるように、中央制御サーバーを使用して定期的にトークンを更新することをお勧めします。 これを行うことの利点は 2 つだけです:

access_token が毎日アクセス制限を超えないようにして、通常のサービスを保証します。

サービスのパフォーマンスが向上し、各ビジネスリクエストが送信される前にaccess_token取得リクエストを送信する必要がなくなりました。

wechat4j は、access_token のプロキシ TokenProxy を通じて access_token を取得し、このプロキシは access_token の中央制御サーバーをカプセル化します。 access_token を保存するには 2 つの方法があり、1 つはメモリに保存する方法、もう 1 つは永続的に保存する方法 (データベースまたはファイル) です。メモリストレージ方式の集中管理サーバーはwehcat4jにより実装されており、お客様による操作は不要です。顧客が永続ストレージを使用したい場合は、中央制御サーバーを自分で定義する必要があります。したがって、次の 2 つの中央制御サーバーがあります:

access_token デフォルトの中央制御サーバー

access_token カスタム中央制御サーバー

デフォルトの中央制御サーバー

wechat4j のデフォルトの中央制御サーバーはメモリ モードです、つまり、access_token はメモリに保存されます有効期限が切れたら、新しいものと交換するようリクエストしてください。中央制御サーバーに対応するデフォルトのクラスは AccessTokenMemServer です。

利点: このモードの中央制御サーバーは非常に効率的で使いやすく、顧客はそれについて心配する必要がありません。

欠点: 複数のサーバーがある場合、この方法はマルチサーバークラスターをサポートできません。

カスタマイズされた中央制御サーバー

access_token をデータベースまたはファイルに保存する必要がある場合は、カスタムの中央制御サーバーを使用する必要があります。カスタマイズされたサーバーは顧客によって完成される必要があり、抽象クラス CustomerServer を継承し、保存メソッドとクエリ メソッドを完了する必要があります。同時に、カスタマイズされたサーバーはタイマーによって駆動され、リスナーを構成する必要があります。
カスタム access_token サーバーを構成する詳細な手順:

独自のサーバー クラスを作成するには、wechat4j の CustomerServer クラスを継承し、save メソッドと find メソッドを実装する必要があります。前者は access_token をデータベースに保存し、後者はデータベースに保存します。データベースから access_token をクエリすることです。これは SQL 操作などです。

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

wechat4j.properties 構成ファイルの wechat.accessToken.server.class 項目を構成し、新しく作成したサーバー クラスのパスと一致させます。

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

web.xml で wechat4j の access_token リスナーを構成します。コードは次のとおりです:

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

上記の 3 つの手順を通じて、独自のデータベース access_token サーバーを構成できます。このように、中央制御サーバーは access_token を定期的に更新し、access_token がビジネス ロジックで使用されるときに、プロキシを通じてデータベースからデータを取得します。
スケジュールされた更新タスクは、古い access_token の有効期限後に新しい access_token が期限切れになるのを防ぐために、200 秒前に実行されます。

Java WeChat 開発 (wechat4j) - access_token 中央制御サーバーの実装に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。