我在我的网站上使用AWS.1小时后,令牌过期,用户几乎无法做任何事情.
现在我正在尝试刷新这样的凭据:
function getTokens(session) {
return {
accessToken: session.getAccessToken().getJwtToken(),
idToken: session.getIdToken().getJwtToken(),
refreshToken: session.getRefreshToken().getToken()
};
};
function getCognitoIdentityCredentials(tokens) {
const loginInfo = {};
loginInfo[`cognito-idp.eu-central-1.amazonaws.com/eu-central-1_XXX`] = tokens.idToken;
const params = {
IdentityPoolId: AWSConfiguration.IdPoolId
Logins: loginInfo
};
return new AWS.CognitoIdentityCredentials(params);
};
if(AWS.config.credentials.needsRefresh()) {
clearInterval(messwerte_updaten);
cognitoUser.refreshSession(cognitoUser.signInUserSession.refreshToken, (err, session) => {
if (err) {
console.log(err);
}
else {
var tokens = getTokens(session);
AWS.config.credentials = getCognitoIdentityCredentials(tokens);
AWS.config.credentials.get(function (err) {
if (err) {
console.log(err);
}
else {
callLambda();
}
});
}
});
}
Run Code Online (Sandbox Code Playgroud)
事情是,1小时后,登录令牌得到刷新而没有问题,但是2小时后我再也无法刷新登录令牌了.
我也尝试过使用AWS.config.credentials.get(), …
看过类似的SO问题,这些问题没有帮助我解决问题。
我在我们的iOS应用中使用AWS Cognito用户池。我们能够成功创建并登录用户。但是大约一小时后访问令牌不可用,我从AWS Cognito文档中了解到iOS SDK自动刷新(也在此处提到)并在不可用时获取令牌,但是我看不到这种行为。以下代码显示了我如何尝试获取访问令牌。
使用iOS SDK AWSCognitoIdentityProvider 2.6.7
请建议我如何解决该问题。
let mySession = self.pool.currentUser()?.getSession()
guard let accessToken = mySession?.result?.accessToken?.tokenString as? String else {
print("Unable to obtain access token")
self.handleSignOut() // Signing out the user since there is no access token
return
}
Run Code Online (Sandbox Code Playgroud)