目次
序文
この記事では、主に 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 トークンの生成と更新のプロセス記録をまとめます。