0

我正在使用@Chime-sdk@Angular-12使用AWS STS令牌,其中一个将在 15 分钟后过期。在过期 STS 令牌AWS调用刷新方法之后,我使用refresh()方法调用我的后端 api 以获取新令牌,然后我重新分配所有凭据,直到现在它运行良好。

但它无法在完成刷新方法执行后重试最后一个 api 或请求。下面附上我的代码:

this._aws.credentials.refresh = (() => {
      this.exampleApiService.getToken().toPromise()
        .then((response: any) => {
          this._aws.credentials.accessKeyId = response.accessKeyId;
          this._aws.credentials.secretAccessKey = response.secretAccessKey
          this._aws.credentials.sessionToken = response.sessionToken;
          this._aws.credentials.expireTime = response.expireTime;
          this._aws.credentials.expired = false;
          this.setChimeClient();

        }).catch(error => {
          console.log(error)
        });
    })

那么我如何重试或回忆我最后一次调用或请求?

4

1 回答 1

0

在尝试了多种方法后,我得到了简单的解决方案。

Chime 将一个回调函数传递给刷新函数,因此在我们调用凭据设置后,回调函数然后 Chime 重新启动最后一个 API 调用或进程。

如果我们无法生成刷新或新令牌,那么我们可以将回调函数中的错误作为参数传递。下面添加了示例代码。

this._aws.credentials.refresh = ((callback) => {
      this.exampleApiService.getToken().toPromise()
        .then((response: any) => {
          this._aws.credentials.accessKeyId = response.accessKeyId;
          this._aws.credentials.secretAccessKey = response.secretAccessKey
          this._aws.credentials.sessionToken = response.sessionToken;
          this._aws.credentials.expireTime = response.expireTime;
          this._aws.credentials.expired = false;
          this.setChimeClient();
          callback();
        }).catch(error => {
          console.log(error)
        });
    })
于 2022-02-09T06:03:05.287 回答