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(..) 调用中,并在需要时获得刷新的令牌。
文档说:"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(..) 调用中,并在需要时获得刷新的令牌。