【发布时间】:2019-04-06 21:06:07
【问题描述】:
我正在使用最新版本的适用于 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);
}
};
身份验证工作得很好。并且它应该缓存。 在我的启动画面活动中,我可以检查 CognitoUser.getCurrentUser().getUserId()。
现在退出:
CognitoUser.getCurrentUser().signOut()
现在,如果我关闭应用并打开应用 - CognitoUser.getCurrentUser().getUserId() 仍会返回我之前登录的用户。
几个月前,我使用 2.2.+ 作为我的 sdk 版本进行了 AWS 实施,这个示例按预期工作。
注意* 如果我尝试 CognitoUser.getCurrentUser().globalSignout() - 它会返回“用户未通过身份验证”错误。
如果我有一个有效的用户/会话,我如何检查应用启动?我讨厌 AWS 在没有文档或无法找到的文档的情况下每天都在进行更改。
【问题讨论】:
-
你如何访问
inputPassword/android 那里的东西?在 Cognito 课程中!
标签: android amazon-web-services aws-sdk amazon-cognito