2017-03-03 13 views
0

私はAWS Cognitoを使用してユーザーアカウントを作成するアプリケーションを構築しています。ほとんどの場合、大丈夫ですが、ユーザーの作成と認証に必要なすべてのクラスとハンドラーを作成して、他のすべてのものにはうまくいきました。しかし、自分のアカウントが作成された直後にユーザーに署名しようとすると、この奇妙な問題に遭遇するようです。私はアプリを再起動した場合、アカウントが作成された後、それは右で署名の問題があるのでAWS CognitoInternalErrorException

com.amazonaws.mobileconnectors.cognitoidentityprovider.exceptions.CognitoInternalErrorException: Authentication failed due to an internal error 

、私は、ちょうど罰金にログインすることができます。非常に具体的ではなく、ドキュメントには「内部エラーが発生しました。リクエストを再試行しても問題が解決しない場合は、AWSフォーラムにメッセージを投稿して詳細をご連絡ください」あなたはどうやってこれを回避しますか?

答えて

1

アカウントを作成して認証すると、認証されていないアカウントを指しているAWS API関連クラスの1つにキャッシュされているものがあります。このエラーは、アカウントの作成後すぐにサインインしようとしている場合にのみ発生します。私のケースでは、ほとんどの場合、AWS Cognito APIコードはすべてマネージャ/ヘルパークラスに含まれています。私のクラスはAWSHelperクラスです。この問題を回避するために、ユーザが確認された後のハンドラでは、単に自分のアクティビティでAWSHelperを再作成しました。私のMainActivityで

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(); 
     } 
    }; 

、私は次のような方法

public boolean updateAWS() { 
    awsHelper = new AWSHelper(this); 
    if (awsHelper.isSignedIn) { 
     changeFragment(new HomeScreenFragment(), "HomeScreenFragment"); 
     return true; 
    } 
    return false; 
} 

も、私がチェックしていませんしているが、あなたは完全にonSuccess()メソッドの後、ユーザーにサインインしよう場合、私は疑う、CognitoUser意志更新せずにサインインできますCognitoInternalErrorException

関連する問題