AWSMobileClient:访问令牌不会自动刷新

时间:2019-12-12 12:05:38

标签: android android-studio aws-sdk amazon-cognito

文档说:“令牌在必要时由库自动刷新。”我打

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返回401(身份验证错误)。 并且AWSMobileClient.getInstance().getTokens().getAccessToken().getTokenString();返回一个错误     AWSMobileClient: Tokens are invalid, please sign-in again. java.lang.Exception: No cached session.

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

1 个答案:

答案 0 :(得分:0)

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