Статус выхода пользователя AWSCognito в чистой установке приложения для Android - PullRequest
0 голосов
/ 14 мая 2019

У меня следующий случай.AWSCognito SDK возвращает ошибку, которая возникает, когда приложение устанавливается впервые, Cognito SDK возвращает SIGN-OUT в методе инициализации, при получении статуса SIGN-OUT он регистрируется с именем пользователя и паролем, используя SIGN-IN метод, этот метод возвращает состояние DONE.При попытке получить токен статус пользователя все еще находится в конце сеанса, несмотря на то, что в функции SIGN-IN (SIGN-IN) статус DONE (DONE) ответил и не смог получить токен

build.gradle (приложение)

implementation 'com.amazonaws:aws-android-sdk-mobile-client:2.13.4'
implementation 'com.amazonaws:aws-android-sdk-auth-userpools:2.13.4'

MainActivity

class MainActivity : AppCompatActivity() {

   override fun onCreate(savedInstanceState: Bundle?) {
       super.onCreate(savedInstanceState)
       setContentView(R.layout.activity_main)
       AWSMobileClient.getInstance().initialize(applicationContext, object : Callback<UserStateDetails>{
           override fun onResult(result: UserStateDetails?) {
               Log.i("awscognito", result?.userState?.name)
               when (result?.userState) {
                   UserState.SIGNED_OUT -> {
                       Log.i("awscognito", "no hay sesion")
                       login()
                   }
                   UserState.SIGNED_IN -> Log.d("COGNITO_STATE", "hay sesion")
                   else -> Log.i("awscognito", "entra al else")
               }
           }

           override fun onError(e: Exception?) {
               Log.d("awscognito", e.toString())
           }
       })
   }

   fun login(){
       val username = "user"
       val password = "password"

       val signInResult = AWSMobileClient.getInstance().signIn(username, password, null)
       when (signInResult.signInState) {
           SignInState.NEW_PASSWORD_REQUIRED -> Log.i("awscognito", signInResult.signInState.name)
           SignInState.SMS_MFA -> Log.i("awscognito", signInResult.signInState.name)
           SignInState.ADMIN_NO_SRP_AUTH-> Log.i("awscognito", signInResult.signInState.name)
           SignInState.CUSTOM_CHALLENGE -> Log.i("awscognito", signInResult.signInState.name)
           SignInState.DEVICE_PASSWORD_VERIFIER -> Log.i("awscognito", signInResult.signInState.name)
           SignInState.DEVICE_SRP_AUTH -> Log.i("awscognito", signInResult.signInState.name)
           SignInState.PASSWORD_VERIFIER -> Log.i("awscognito", signInResult.signInState.name)
           SignInState.UNKNOWN -> Log.i("COGNITO_STATE", signInResult.signInState.name)
           SignInState.DONE -> {
               Log.i("awscognito", signInResult.signInState.name)
               getToken()
           }
       }

   }

   fun getToken(){
       AWSMobileClient.getInstance().getTokens(object : Callback<Tokens>{
           override fun onResult(result: Tokens?) {
               Log.i("awscognito", result?.idToken?.tokenString)
           }

           override fun onError(e: java.lang.Exception?) {
               Log.i("awscognito", e.toString())
           }
       })
   }
}

Я надеюсь, что Awscognito вернет действительный токен, но я получаю следующий результат

2019-05-14 08:25:56.763 5666-5687/com.example.cognito W/AWSMobileClient: Failed to federate tokens during sign-in
    java.lang.RuntimeException: Error in federating the token.
        at com.amazonaws.mobile.client.AWSMobileClient$8.run(AWSMobileClient.java:1484)
        at com.amazonaws.mobile.client.internal.InternalCallback.await(InternalCallback.java:115)
        at com.amazonaws.mobile.client.AWSMobileClient.federatedSignInWithoutAssigningState(AWSMobileClient.java:1414)
        at com.amazonaws.mobile.client.AWSMobileClient$6$1.onSuccess(AWSMobileClient.java:1156)
        at com.amazonaws.mobileconnectors.cognitoidentityprovider.CognitoUser$6.onSuccess(CognitoUser.java:787)
        at com.amazonaws.mobileconnectors.cognitoidentityprovider.CognitoUser$27.run(CognitoUser.java:2553)
        at com.amazonaws.mobileconnectors.cognitoidentityprovider.CognitoUser$24.run(CognitoUser.java:2430)
        at com.amazonaws.mobileconnectors.cognitoidentityprovider.continuations.AuthenticationContinuation.continueTask(AuthenticationContinuation.java:124)
        at com.amazonaws.mobile.client.AWSMobileClient$6$1.getAuthenticationDetails(AWSMobileClient.java:1173)
        at com.amazonaws.mobileconnectors.cognitoidentityprovider.CognitoUser.getSession(CognitoUser.java:751)
        at com.amazonaws.mobile.client.AWSMobileClient$6.run(AWSMobileClient.java:1142)
        at com.amazonaws.mobile.client.internal.InternalCallback.await(InternalCallback.java:115)
        at com.amazonaws.mobile.client.AWSMobileClient.signIn(AWSMobileClient.java:1127)
        at com.example.cognito.MainActivity.login(MainActivity.kt:43)
        at com.example.cognito.MainActivity$onCreate$1.onResult(MainActivity.kt:26)
        at com.example.cognito.MainActivity$onCreate$1.onResult(MainActivity.kt:20)
        at com.amazonaws.mobile.client.internal.InternalCallback.call(InternalCallback.java:75)
        at com.amazonaws.mobile.client.internal.InternalCallback.onResult(InternalCallback.java:62)
        at com.amazonaws.mobile.client.AWSMobileClient$2.run(AWSMobileClient.java:593)
        at com.amazonaws.mobile.client.internal.InternalCallback$1.run(InternalCallback.java:101)
        at java.lang.Thread.run(Thread.java:764)
     Caused by: com.amazonaws.services.cognitoidentity.model.InvalidIdentityPoolConfigurationException: Invalid identity pool configuration. Check assigned IAM roles for this pool. (Service: AmazonCognitoIdentity; Status Code: 400; Error Code: InvalidIdentityPoolConfigurationException; Request ID: 3085dbf4-7654-11e9-99fb-516bf8dbaba2)
        at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:730)
        at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:405)
        at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:212)
        at com.amazonaws.services.cognitoidentity.AmazonCognitoIdentityClient.invoke(AmazonCognitoIdentityClient.java:1658)
        at com.amazonaws.services.cognitoidentity.AmazonCognitoIdentityClient.getCredentialsForIdentity(AmazonCognitoIdentityClient.java:680)
        at com.amazonaws.auth.CognitoCredentialsProvider.populateCredentialsWithCognito(CognitoCredentialsProvider.java:782)
        at com.amazonaws.auth.CognitoCredentialsProvider.startSession(CognitoCredentialsProvider.java:694)
        at com.amazonaws.auth.CognitoCredentialsProvider.refresh(CognitoCredentialsProvider.java:631)
        at com.amazonaws.auth.CognitoCachingCredentialsProvider.refresh(CognitoCachingCredentialsProvider.java:510)
        at com.amazonaws.auth.CognitoCachingCredentialsProvider.getIdentityId(CognitoCachingCredentialsProvider.java:452)
        at com.amazonaws.auth.CognitoCredentialsProvider.populateCredentialsWithCognito(CognitoCredentialsProvider.java:776)
        at com.amazonaws.auth.CognitoCredentialsProvider.startSession(CognitoCredentialsProvider.java:694)
        at com.amazonaws.auth.CognitoCredentialsProvider.refresh(CognitoCredentialsProvider.java:631)
        at com.amazonaws.auth.CognitoCachingCredentialsProvider.refresh(CognitoCachingCredentialsProvider.java:510)
        at com.amazonaws.mobile.client.AWSMobileClient.federateWithCognitoIdentity(AWSMobileClient.java:1515)
        at com.amazonaws.mobile.client.AWSMobileClient$8.run(AWSMobileClient.java:1471)
        at com.amazonaws.mobile.client.internal.InternalCallback.await(InternalCallback.java:115) 
        at com.amazonaws.mobile.client.AWSMobileClient.federatedSignInWithoutAssigningState(AWSMobileClient.java:1414) 
        at com.amazonaws.mobile.client.AWSMobileClient$6$1.onSuccess(AWSMobileClient.java:1156) 
        at com.amazonaws.mobileconnectors.cognitoidentityprovider.CognitoUser$6.onSuccess(CognitoUser.java:787) 
        at com.amazonaws.mobileconnectors.cognitoidentityprovider.CognitoUser$27.run(CognitoUser.java:2553) 
        at com.amazonaws.mobileconnectors.cognitoidentityprovider.CognitoUser$24.run(CognitoUser.java:2430) 
        at com.amazonaws.mobileconnectors.cognitoidentityprovider.continuations.AuthenticationContinuation.continueTask(AuthenticationContinuation.java:124) 
        at com.amazonaws.mobile.client.AWSMobileClient$6$1.getAuthenticationDetails(AWSMobileClient.java:1173) 
        at com.amazonaws.mobileconnectors.cognitoidentityprovider.CognitoUser.getSession(CognitoUser.java:751) 
        at com.amazonaws.mobile.client.AWSMobileClient$6.run(AWSMobileClient.java:1142) 
        at com.amazonaws.mobile.client.internal.InternalCallback.await(InternalCallback.java:115) 
        at com.amazonaws.mobile.client.AWSMobileClient.signIn(AWSMobileClient.java:1127) 
        at com.example.cognito.MainActivity.login(MainActivity.kt:43) 
        at com.example.cognito.MainActivity$onCreate$1.onResult(MainActivity.kt:26) 
        at com.example.cognito.MainActivity$onCreate$1.onResult(MainActivity.kt:20) 
        at com.amazonaws.mobile.client.internal.InternalCallback.call(InternalCallback.java:75) 
        at com.amazonaws.mobile.client.internal.InternalCallback.onResult(InternalCallback.java:62) 
        at com.amazonaws.mobile.client.AWSMobileClient$2.run(AWSMobileClient.java:593) 
        at com.amazonaws.mobile.client.internal.InternalCallback$1.run(InternalCallback.java:101) 
        at java.lang.Thread.run(Thread.java:764) 
2019-05-14 08:25:56.764 5666-5687/com.example.cognito I/awscognito: DONE
2019-05-14 08:25:56.766 5666-5709/com.example.cognito D/AWSMobileClient: Inspecting user state details
2019-05-14 08:25:56.767 5666-5709/com.example.cognito D/AWSMobileClient: waitForSignIn: userState:SIGNED_OUT
2019-05-14 08:25:56.767 5666-5709/com.example.cognito I/awscognito: java.lang.Exception: getTokens does not support retrieving tokens while signed-out
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...