基本上,在您創建帳戶並對其進行身份驗證之後,仍會在某個AWS API相關類中緩存某些內容,這些類仍然指向未通過身份驗證的帳戶。只有在帳戶創建後立即登錄時纔會出現此錯誤。在我的情況下,在大多數情況下,所有AWS Cognito API代碼都包含在管理器/幫助器類中,我的代碼是AWSHelper
類。爲了解決這個問題,在我的Handler中確認用戶之後,我簡單地在我的活動中重新創建了AWSHelper,並且我能夠很好地登錄。
GenericHandler confirmationCallback = new GenericHandler() {
@Override
public void onSuccess() {
Log.w("DMJ", "user has been confirmed!");
if (!mainActivity.updateAWS()) {
Toast.makeText(activity, "Account created! Please sign into your account", Toast.LENGTH_LONG).show();
activity.changeFragment(new SignInFragment(), "SignInFragment");
} else {
Toast.makeText(activity, "Account created!", Toast.LENGTH_LONG).show();
}
}
@Override
public void onFailure(Exception exception) {
Log.w("DMJ", "confirmation got rekt m8");
exception.printStackTrace();
}
};
在我的MainActivity,我有以下方法
public boolean updateAWS() {
awsHelper = new AWSHelper(this);
if (awsHelper.isSignedIn) {
changeFragment(new HomeScreenFragment(), "HomeScreenFragment");
return true;
}
return false;
}
此外,我沒有檢查,但我想,如果你嘗試之後的onSuccess()
方法完全的CognitoUser
會在用戶登錄無需登錄即可更新和登錄CognitoInternalErrorException