gpt4 book ai didi

android - AWS Cognito 注销 Android

转载 作者:行者123 更新时间:2023-11-29 23:28:27 24 4
gpt4 key购买 nike

我正在使用适用于 Android 的最新版本的 AWS 开发工具包。

implementation 'com.amazonaws:aws-android-sdk-core:2.7.6'
implementation 'com.amazonaws:aws-android-sdk-cognito:2.7.6'
implementation 'com.amazonaws:aws-android-sdk-cognitoidentityprovider:2.7.6'

我的身份验证处理程序大部分取自他们的示例代码。

    // create a handler for the sign-in process
private AuthenticationHandler authenticationHandler = new AuthenticationHandler() {

@Override
public void onSuccess(CognitoUserSession userSession, CognitoDevice newDevice) {
// String idToken = userSession.getIdToken().getJWTToken();
// Map<String, String> logins = new HashMap<>();
// logins.put("cognito-idp.us-east-1.amazonaws.com/" + getString(R.string.user_pool_id), idToken);
// AuthHelper.getInstance().getCredentialsProvider().setLogins(logins);
//
// new RefreshCognitoCredentials().execute();

startActivity(new Intent(LoginActivity.this, MainActivity.class));
finish();
}

@Override
public void getAuthenticationDetails(AuthenticationContinuation authenticationContinuation, String userId) {
String password = inputPassword.getText().toString();

AuthenticationDetails authenticationDetails = new AuthenticationDetails(userId, password, null);
authenticationContinuation.setAuthenticationDetails(authenticationDetails);
authenticationContinuation.continueTask();
}

@Override
public void getMFACode(MultiFactorAuthenticationContinuation continuation) {

}

@Override
public void authenticationChallenge(ChallengeContinuation continuation) {

}

@Override
public void onFailure(Exception exception) {
String error = AuthHelper.formatException(exception);
layoutUsername.setErrorEnabled(true);
layoutUsername.setError(error);
}
};

身份验证工作正常。它应该缓存。在我的闪屏 Activity 中,我能够检查 CognitoUser.getCurrentUser().getUserId()。

现在注销:

CognitoUser.getCurrentUser().signOut()

现在,如果我关闭应用程序并打开应用程序 - CognitoUser.getCurrentUser().getUserId() 仍会返回我之前登录的用户。

几个月前,我使用 2.2.+ 作为我的 sdk 版本完成了 AWS 实现,这个示例按预期工作。

注意* 如果我尝试 CognitoUser.getCurrentUser().globalSignout() - 它会返回“用户未通过身份验证”错误。

如果我有一个有效的用户/ session ,我如何检查应用程序启动?我讨厌 AWS 每天在没有文档或无法找到的文档的情况下如何改变事物。

最佳答案

signOut 从 SharedPreferences 中清除缓存的 token 。它清除存储在访问、ID 和刷新 token 下的数据。但是,LastAuthUser key 包含未被注销清除的用户 ID。

当您调用 cognitoUserPool.getCurrentUser().getUserId() 时,它会检查 SharedPreferences 中是否存在 LastAuthUser 键,因此会返回 userId。我正在调查这个问题。当我可以确认预期的行为时,将更新此答案。

关于android - AWS Cognito 注销 Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53121639/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com