aws cognito 用户获取 ID 令牌 android
aws cognito user get id token android
我正在尝试在 android 中获取当前登录用户的 aws cognito 标识令牌。
我找到了这个例子:
session.getIdToken().getJWTToken()
其中会话是 CognitoUserSession 对象
我似乎想不出在调用登录后获取当前 cognitousersession 的方法。
我正在使用注释教程中的默认验证器 activity:
https://docs.aws.amazon.com/aws-mobile/latest/developerguide/tutorial-android-aws-mobile-notes-auth.html
它说令牌存储在共享首选项中,但我不知道如何在未来的活动中检索它们,以便我可以使用 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();
}
});
});
}
当令牌 not/will 未过期时,AWS Android SDK 将 return JWT 令牌无需网络调用。
可以使用 CognitoIdentityProviderClientConfig.setRefreshThreshold(long)
方法设置刷新令牌的阈值。
如果你还好奇如何自己取回token,那么代码可以在readCachedTokens()
方法中找到
https://github.com/aws/aws-sdk-android/blob/master/aws-android-sdk-cognitoidentityprovider/src/main/java/com/amazonaws/mobileconnectors/cognitoidentityprovider/CognitoUser.java#L2116
我正在尝试在 android 中获取当前登录用户的 aws cognito 标识令牌。
我找到了这个例子: session.getIdToken().getJWTToken() 其中会话是 CognitoUserSession 对象
我似乎想不出在调用登录后获取当前 cognitousersession 的方法。
我正在使用注释教程中的默认验证器 activity: https://docs.aws.amazon.com/aws-mobile/latest/developerguide/tutorial-android-aws-mobile-notes-auth.html
它说令牌存储在共享首选项中,但我不知道如何在未来的活动中检索它们,以便我可以使用 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();
}
});
});
}
当令牌 not/will 未过期时,AWS Android SDK 将 return JWT 令牌无需网络调用。
可以使用 CognitoIdentityProviderClientConfig.setRefreshThreshold(long)
方法设置刷新令牌的阈值。
如果你还好奇如何自己取回token,那么代码可以在readCachedTokens()
方法中找到
https://github.com/aws/aws-sdk-android/blob/master/aws-android-sdk-cognitoidentityprovider/src/main/java/com/amazonaws/mobileconnectors/cognitoidentityprovider/CognitoUser.java#L2116