AWSMobileClient:访问令牌未自动刷新

AWSMobileClient: Access Token not refreshed automatically

文档说:"The tokens are automatically refreshed by the library when necessary."。我叫

AWSMobileClient.getInstance().getTokens().getAccessToken().getTokenString(); 每次在使用 AccessToken 调用 API 之前。 这是我的 awsconfiguration 文件的样子

`{
"IdentityManager": {
    "Default": {}
  },
"CredentialsProvider": {
    "CognitoIdentity": {
        "Default": {
            "PoolId": "ap-xxxxx-1:2xxxxxx-xxxx-xxxx-xxxx-7xxxxxxxxxx",
            "Region": "ap-xxxxx-1"
        }
    }
},

"CognitoUserPool": {
    "Default": {
        "PoolId": "ap-xxxxx-1_xxxxxxxxx",
        "AppClientId": "xxxxxxxxxxxxxxxxxxxxx",
        "Region": "ap-xxxxx-1"
    }
}

一个小时后,API returns 401(身份验证错误)。 而AWSMobileClient.getInstance().getTokens().getAccessToken().getTokenString();returns一个错误 AWSMobileClient: Tokens are invalid, please sign-in again. java.lang.Exception: No cached session.

我是不是做错了什么? PS: 我没有使用过 Amplify CLI。

所以问题是我从主线程调用 getTokens() 方法,它在没有刷新的情况下返回了令牌。然后我将 getTokens 调用移到 AWSMobileClient.getInstance().initialize(..) 调用中,并在需要时获得刷新的令牌。