aws cognito用户获取id令牌android
我正在尝试获取android中aws cognito的当前登录用户id令牌 我发现这个例子: session.getIdToken().getJWTToken() 其中session是CognitoUserSession对象 在登录调用完成后,我似乎无法找到获取当前cognitousersession的方法 我正在使用notes教程中的默认验证器活动:aws cognito用户获取id令牌android,android,amazon-web-services,session,aws-cognito,Android,Amazon Web Services,Session,Aws Cognito,我正在尝试获取android中aws cognito的当前登录用户id令牌 我发现这个例子: session.getIdToken().getJWTToken() 其中session是CognitoUserSession对象 在登录调用完成后,我似乎无法找到获取当前cognitousersession的方法 我正在使用notes教程中的默认验证器活动: 它说令牌存储在共享首选项中,但我不知道如何在将来的活动中检索它们,以便我可以使用id令牌调用api网关。由于还没有人应答,这可能会帮助您解决问
它说令牌存储在共享首选项中,但我不知道如何在将来的活动中检索它们,以便我可以使用id令牌调用api网关。由于还没有人应答,这可能会帮助您解决问题,请注意这是JS代码: 这是我从已登录用户处接收会话的例行程序。 在此之后,我可以访问令牌
var user_data = {
UserPoolId: AWSConfiguration.UserPoolId,
ClientId: AWSConfiguration.ClientAppId
};
var userPool = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool(user_data);
if (userPool.getCurrentUser() != null) {
userPool.getCurrentUser().getSession(function (err, session) {
if (err) {
window.location.href = "login.html";
}
var user_params = {
IdentityPoolId: AWSConfiguration.IdPoolId,
Logins: {
'cognito-idp.eu-central-1.amazonaws.com/eu-central-1_XXX':session.idToken.jwtToken
}
};
AWS.config.credentials = new AWS.CognitoIdentityCredentials(user_params);
AWS.config.region = AWSConfiguration.region;
AWS.config.credentials.refresh((error) => {
if (error) {
console.error(error);
}
else {
user_is_authenticated();
}
});
});
}
当JWT令牌未过期/不会过期时,AWS Android SDK将在不进行网络调用的情况下返回JWT令牌 可以使用
CognitoIdentityProviderClientConfig.setRefreshThreshold(long)
方法设置令牌刷新时间的阈值
如果您仍然想知道如何自己检索令牌,那么可以在readCachedTokens()
方法中找到代码
android sdk的CurrentUser.getSession进行网络调用以获取令牌,我正试图避免这种情况。我需要一种从共享首选项中检索存储令牌的方法。谢谢donkon,这个链接正是我所需要的。