• 抖店token的生成和刷新的实际开发笔记


    目录

    前言

    一、获取token准备事宜

    第1点,app_key的获取

    第2点,获取method

     第3点,获取grant_type

    二、token的生成使用步骤

    1.token的生成的代码逻辑

    三、刷新token的准备事宜

    1.refresh_token的获取

    2.grant_type的获取

     四、token的刷新使用步骤

    1.token的刷新的代码逻辑

    总结


    前言

    本文主要是总结一下抖店token的生成和刷新的过程记录。

    一、获取token准备事宜

    首先,我们对接抖店开放平台的所有接口,都需要token,那么这个token的获取就显得很重要了,我们应该怎么获取token呢,如何保证token一直都是有效的,不会过期,影响我们的接口调用呢,这是我们值得思考的地方,

    首先,在获取token前,我们需要先准备token的相关准备东西。

    第1点,app_key的获取

    我们首先,填完相关信息资料后,然后创建应用,这样才可以拥有app_key

     然后,我们先点进你注册的店铺的应用详情,就来到了图中的这个页面,然后,在点入应用概览,我们就会看到应用信息和证书信息,我们点入证书信息,就可以看到APP_Key了,这个就是你当前店铺的app_key了;

    第2点,获取method

    这个的获取就很简单了,直接看这个接口的文档即可,如图所示

     第3点,获取grant_type

    同样,这个也需要看文档,如图所示

     以上这些参数都是必备的,有2种获取token的方式,第1种是自己组装请求url的,另1种是采用官方提供的sdk的方式,这种比较简单,推荐使用这种。

    二、token的生成使用步骤

    1.token的生成的代码逻辑

    首先,我们先写控制器层,提供对外访问的入口

    1. /**
    2. *
    3. * 新的生成token的方法
    4. * @param
    5. * @return
    6. * @throws
    7. */
    8. @ApiOperation(tags = "TikTok", value = "createToken", httpMethod = "POST",
    9. notes = "抖店_获取accessToken")
    10. @PostMapping("/createToken")
    11. public DataResult createToken() throws Exception {
    12. return DataResults.ok(tiktokBaseBiz.createToken());
    13. }

    第2步,我们在业务层做处理,思路是这样的,我们先通过sdk方法中的,这个build方法来获取到新的accessToken,然后呢,我们把这个新的token ,存到我们的redis中,这样的好处是,我们在对接它的其他接口时,要使用到这个token时,我们直接从redis中取即可。

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

    三、刷新token的准备事宜

    前面我们讲了token的生成了,那么接下来,我们如何保证和续约token就很关键了,当然是通过刷新token的方式来实现啦,怎么实现呢,看文档

    由官方提供的文档中,我们可以知道,使用refresh_token刷新access_token,所以这个接口方法是/token/refresh;我们知道这个外,还需要知道它的使用的各个场景,

    它的使用场景如下所示:

    使用场景: 1、在 access_token过期时,使用 refresh_token可以获取新的acces_token 和 refresh_token;可以保证一直是有效的access_token。

    2、access_token有效期7天,refresh_token用于刷新access_token的刷新令牌,有效期:14 天; 注意点: 1.、在 access_token 过期前1h之前,ISV使用 refresh_token 刷新时,会返回原来的 access_token 和 refresh_token,但是二者有效期不会变; 2、在 access_token 过期前1h之内,ISV使用 refresh_token 刷新时,会返回新的 access_token 和 refresh_token,但是原来的 access_token 和 refresh_token 继续有效一个小时;

    3、在 access_token 过期后,ISV使用 refresh_token 刷新时,将获得新的 acces_token 和 refresh_token,同时原来的 acces_token 和 refresh_token 失效;

    1.refresh_token的获取

     这个的获取,它是要在前面的token的生成中产生的,也就是前面的token的生成时,已经产生这个参数了,我们只需使用前面产生的即可了。

    2.grant_type的获取

    这个参数的获取,主要是看文档的提供,如下所示,


     四、token的刷新使用步骤

    1.token的刷新的代码逻辑

    这里,我们就要对前面生成的token,进行刷新使用了,这样做的好处就是,保证了token一直是有效的,接口调用使用token,一直都是稳定的。

    首先,我们先写控制层,提供对外访问的接口

    1. /**
    2. * 抖店:
    3. * 刷新token
    4. * @return
    5. * @throws
    6. */
    7. @ApiOperation(tags = "JOB", value = "tiktokRefreshToken", httpMethod = "POST",
    8. notes = "抖店_刷新token")
    9. @PostMapping("/tiktokRefreshToken")
    10. @AllowAnonymous
    11. public DataResult tiktokRefreshToken() throws Exception {
    12. return DataResults.ok(tiktokBaseBiz.refreshToken());
    13. }

    然后,我们在在业务层做处理,这里思路是怎么样的,首先是,先从缓存中获取出来refreshToken,因为这个不知道是不是有效的,存在redis中,所以呢,我们要先判断一下,如果它已经不存在了,我们直接重新生成新的token即可了。

    如果它是有效的话,那么我们只需要刷新即可了,怎么刷新呢,

    我们采用sdk的方式,就像图中的那样即可了。

    然后,把刷新的东西,都存到redis中去。

    1. /**
    2. * 抖店_刷新accessToken
    3. * @return
    4. * @throws
    5. */
    6. public AccessToken refreshToken() throws Exception {
    7. AccessToken accessToken = null;
    8. //从缓存里获取refreshToken,缓存存的一直有效token
    9. TiktokAccessTokenRedisBean redisTokenBean = redisCacheService.getTiktokToken(projectConfig.getTikTokDefaultStoreCode());
    10. if(redisTokenBean==null){
    11. //缓存不存在的情况直接createToken
    12. accessToken = this.createToken(); // 直接调用这个生成token的方法生成
    13. }else{
    14. logger.info("抖店的token有效时长===="+redisTokenBean.getExpiresIn());
    15. logger.info("进来到这,说明这个token在redis中已经存在了,只需要重新刷新即可!!!");
    16. String refreshToken = redisTokenBean.getRefreshToken();
    17. // TODO 采用sdk
    18. GlobalConfig.initAppKey(projectConfig.getTiktokECommerceAppId());
    19. GlobalConfig.initAppSecret(projectConfig.getTiktokECommerceAppSecret());
    20. accessToken = AccessTokenBuilder.refresh(refreshToken); //刷新token
    21. logger.info("抖店刷新的token======"+ JSON.toJSONString(accessToken));
    22. try {
    23. redisCacheService.putTikTokAccessToken(projectConfig.getTikTokDefaultStoreCode(), accessToken.getAccessToken(), accessToken.getExpireIn(), accessToken.getRefreshToken(), accessToken.getScope(), Long.valueOf(accessToken.getShopId()), accessToken.getShopName(), accessToken.getLogId());
    24. } catch (Exception e) {
    25. logger.info("更新的token到存储redis异常" + e);
    26. logger.error("更新的token到存储redis异常" + e);
    27. }
    28. }
    29. return accessToken;
    30. }

    总结

    本文主要是总结一下抖店token的生成和刷新的过程记录。

  • 相关阅读:
    如何快速构建研发效能度量的指标体系?
    媒体格式转换软件Permute 3 mac中文版软件特点
    基于C++和遗传算法的旅行商问题解决方案(免费提供源码)
    【java进阶03: package和import】及访问控制权限
    11位顶级专家共同预测2023年量子领域发展趋势
    基于H5 网页的打豆豆小游戏的设计与实现
    从月薪8k到月薪30k,自动化测试究竟该怎样学...
    神经网络模型如何使用的,神经网络模型是干嘛的
    【vue】下载导出excel
    C/C++编程 —— 读取和保存 TXT 文本
  • 原文地址:https://blog.csdn.net/weixin_46442877/article/details/127924734