Doudian トークンの生成と更新に関する実際の開発メモ

目次

序文

1. トークン取得の準備

ポイント1、app_keyの取得

ポイント2、メソッドを取得する

 ポイント3、grant_typeを取得する

2. トークンの生成と使用の手順

1.トークン生成コードロジック

3. トークンリフレッシュの準備

1.refresh_tokenを取得する

2.grant_typeの取得

 4. トークンを更新して使用する手順

1. トークン更新コードのロジック

要約する


序文

この記事では、主に Doudian トークンの生成と更新のプロセス記録をまとめます。

1. トークン取得の準備

まず第一に、Doudian オープン プラットフォームへの接続に使用するすべてのインターフェイスにはトークンが必要であるため、このトークンを取得することが非常に重要です。トークンを取得するにはどうすればよいですか? トークンが常に有効であり、有効期限が切れず、影響を与えないようにするにはどうすればよいですか?私たちのビジネスはどうですか? インターフェイス呼び出しはどうですか? これは検討する価値があります。

まず、トークンを取得する前に、トークン関連の準備を行う必要があります。

ポイント1、app_keyの取得

まず関連情報を入力してから、app_key を取得できるようにアプリケーションを作成します。

 次に、登録した店舗の申請詳細をクリックすると写真のページに遷移し、申請概要をクリックすると申請情報と証明書情報が表示されます。 APP_Key が表示されると、これは現在のストアの app_key です。

ポイント2、メソッドを取得する

これを取得するのは非常に簡単です。図に示すように、このインターフェイスのドキュメントを参照するだけです。

 ポイント3、grant_typeを取得する

同様に、図に示すように、これに関するドキュメントも読む必要があります。

 上記のパラメータはすべて必須であり、トークンの取得方法は2通りあり、リクエストURLを自分で組み立てる方法と、公式SDKを使用する方法が比較的簡単なのでお勧めします。

2. トークンの生成と使用の手順

1.トークン生成コードロジック

まず、外部アクセスの入り口を提供するコントローラー層を作成します。

    /**
     * 
     * 新的生成token的方法
     * @param
     * @return
     * @throws 
     */

    @ApiOperation(tags = "TikTok", value = "createToken", httpMethod = "POST",
            notes = "抖店_获取accessToken")
    @PostMapping("/createToken")
    public DataResult<AccessToken> createToken() throws Exception {
        return DataResults.ok(tiktokBaseBiz.createToken());
    }

ステップ 2, ビジネス層での処理を行います。考え方は次のとおりです。まず、SDK メソッドの build メソッドを通じて新しい accessToken を取得します。次に、この新しいトークンを Redis に保存します。この利点は次のとおりです。他のインターフェイスに接続するときにこのトークンを使用する必要がある場合は、redis から直接取得できます。

    /**
     * 抖店_获取accessToken
     * 该方法会调取抖店接口,使旧token失效并覆盖缓存
     * @return
     * @throws 
     */
    public AccessToken createToken() throws Exception {
       
        Long shopId = Long.valueOf(projectConfig.getTiktokECommerceDefaultStoreId());    // 抖店店铺id
        GlobalConfig.initAppKey(projectConfig.getTiktokECommerceAppId());  // 配置 
        GlobalConfig.initAppSecret(projectConfig.getTiktokECommerceAppSecret());  
        AccessToken accessToken = AccessTokenBuilder.build(shopId);  // set店铺ID 
        logger.info("抖店生成的token======"+ JSON.toJSONString(accessToken));
        try {
            redisCacheService.putTikTokAccessToken(projectConfig.getTikTokProductDefaultStoreCode(), accessToken.getAccessToken(), accessToken.getExpireIn(), accessToken.getRefreshToken(), accessToken.getScope(), Long.valueOf(accessToken.getShopId()), accessToken.getShopName(), accessToken.getLogId());
        }catch (Exception e){
            logger.info("更新的token到存储redis异常"+e);
            logger.error("更新的token到存储redis异常"+e);
        }
        return accessToken;
    }

3. トークンリフレッシュの準備

先ほどトークンの生成について説明しましたので、次に、トークンをどのように保証して更新するかが非常に重要です。もちろん、これはトークンを更新することで実現されます。これを実現する方法については、ドキュメントを参照してください。

公式ドキュメントから、access_token を更新するためにfresh_token が使用されることがわかるため、このインターフェイス メソッドは /token/refresh であることがわかります。これを知ることに加えて、その使用のさまざまなシナリオも知る必要があります。

その使用シナリオは次のとおりです。

使用シナリオ: 1. access_token の有効期限が切れたら、refresh_token を使用して新しい acces_token とfresh_token を取得します。これは有効な access_token であることが保証されます。

2. access_token は 7 日間有効であり、refresh_token は access_token リフレッシュ トークンの更新に使用されます。有効期間は: 14 日間、注: 1. access_token の有効期限が 1 時間前に切れる前に、ISV がリフレッシュ トークンを使用して更新します。 、元の access_token とfresh_token が返されますが、これら 2 つの有効期間は変わりません; 2. access_token の有効期限が切れる 1 時間以内に、ISV がfresh_token を使用して更新すると、新しい access_token とfresh_token が返されますが、元の access_token とfresh_token は 1 時間有効です。

3. access_token の有効期限が切れた後、ISV がfresh_token を使用して更新すると、新しい acces_token とfresh_token が取得され、元の acces_token とfresh_token は無効になります。

1.refresh_tokenを取得する

 これの取得は前回のトークン生成時に生成される、つまり前回のトークン生成時に既にこのパラメータが生成されているので、前回生成したものを利用するだけで済みます。

2.grant_typeの取得

このパラメータの取得は、以下に示すように、主に提供されるドキュメントに依存します。


 4. トークンを更新して使用する手順

1. トークン更新コードのロジック

ここでは、以前に生成されたトークンを更新して使用する必要がありますが、これの利点は、トークンが常に有効であることが保証され、トークンを使用したインターフェイス呼び出しが常に安定していることです。

まず、外部アクセス用のインターフェイスを提供する制御層を作成します。

    /**
     * 抖店:
     *      刷新token
     * @return
     * @throws 
     */
    @ApiOperation(tags = "JOB", value = "tiktokRefreshToken", httpMethod = "POST",
            notes = "抖店_刷新token")
    @PostMapping("/tiktokRefreshToken")
    @AllowAnonymous
    public DataResult<AccessToken> tiktokRefreshToken() throws Exception {
        return DataResults.ok(tiktokBaseBiz.refreshToken());
    }

では、ビジネス層での処理を行っているのですが、これはどういうことなのでしょうか? まず、キャッシュからrefreshTokenを取得します、これは有効かどうか分からないので、redisに保存されているので判断する必要がありますトークンが存在しなくなった場合は、新しいトークンを直接再生成できます。

有効であれば、更新するだけで済みます。更新するにはどうすればよいですか?

写真のようにSDK方式を使用しています。

次に、更新されたものをすべて Redis に保存します。

   /**
     * 抖店_刷新accessToken
     * @return
     * @throws 
     */
    public AccessToken refreshToken() throws Exception {
        AccessToken accessToken = null;
        //从缓存里获取refreshToken,缓存存的一直有效token
        TiktokAccessTokenRedisBean redisTokenBean = redisCacheService.getTiktokToken(projectConfig.getTikTokDefaultStoreCode());
        if(redisTokenBean==null){
            //缓存不存在的情况直接createToken
             accessToken = this.createToken();  // 直接调用这个生成token的方法生成
        }else{
                logger.info("抖店的token有效时长===="+redisTokenBean.getExpiresIn());
                logger.info("进来到这,说明这个token在redis中已经存在了,只需要重新刷新即可!!!");
                String refreshToken = redisTokenBean.getRefreshToken();
               
                // TODO 采用sdk
                GlobalConfig.initAppKey(projectConfig.getTiktokECommerceAppId());
                GlobalConfig.initAppSecret(projectConfig.getTiktokECommerceAppSecret());
                accessToken = AccessTokenBuilder.refresh(refreshToken);     //刷新token
                logger.info("抖店刷新的token======"+ JSON.toJSONString(accessToken));
                try {
                    redisCacheService.putTikTokAccessToken(projectConfig.getTikTokDefaultStoreCode(), accessToken.getAccessToken(), accessToken.getExpireIn(), accessToken.getRefreshToken(), accessToken.getScope(), Long.valueOf(accessToken.getShopId()), accessToken.getShopName(), accessToken.getLogId());
                } catch (Exception e) {
                    logger.info("更新的token到存储redis异常" + e);
                    logger.error("更新的token到存储redis异常" + e);
                }
        }
        return accessToken;
    }

要約する

この記事では、主に Doudian トークンの生成と更新のプロセス記録をまとめます。

おすすめ

転載: blog.csdn.net/weixin_46442877/article/details/127924734