Вход в AWS Cognito через Google не сохраняет пользователя в пулы пользователей. - PullRequest
0 голосов
/ 04 февраля 2019

Я не знаю, почему AWS Cognito не работает, когда я использую вход в социальную сеть, то есть, провайдера Google.Я установил все необходимые правила в конфигурации amplify, включил провайдера Google, а также настроил awsconfiguration.json.Когда я вхожу, используя электронную почту или имя пользователя, что является обычным логином, используя пароль, все в порядкеПользователи сохраняются в пулы пользователей:

Normal sign in

Но когда я вхожу в систему с помощью Google, ни один пользователь не сохраняется.Кажется, информация для входа сохраняется только в SharedPreferences, а не в облако.Вот доказательство:

Google login

Я не знаю почему.Вот мой код для входа в систему:

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    when (requestCode) {
        RESPONSE_SUCCESS_GOOGLE_LOGIN -> {
            try {
                val task = GoogleSignIn.getSignedInAccountFromIntent(data)
                val account = task.getResult(ApiException::class.java)!!
                AWSMobileClient.getInstance().federatedSignIn(IdentityProvider.GOOGLE.toString(), account.idToken, object : Callback<UserStateDetails> {
                    override fun onResult(details: UserStateDetails) {
                        // onResult is called, but the user information not saved to the cloud
                    }

                    override fun onError(e: Exception) {
                        Log.e(TAG, "sign-in error", e)
                    }
                })
            } catch (e: ApiException) {
                Log.w(TAG, "signInResult:failed code=" + e.statusCode)
            }
        }
    }
}

Вы можете проверить случайную строку, которая вообще не является корректным токеном JWT:

val randomJwt = "239rwienaffe"
AWSMobileClient.getInstance().federatedSignIn(IdentityProvider.GOOGLE.toString(), randomJwt, object : Callback<UserStateDetails> {

Затем вызывается onResult и сообщить, что логинэто успех.Довольно забавно, не правда ли?Я не знаю, как правильно реализовать вход в Google с помощью AWS Cognito.Изучать AWS чрезвычайно сложно, чем Firebase.

Есть ли у вас представление или шаги, чтобы правильно войти в систему с провайдером Google?Нужно ли реализовывать что-то сложное для достижения этой простой функции?Например, используя комбинацию API Gateway, Lambda, IAM и т. Д.

1 Ответ

0 голосов
/ 07 февраля 2019

Код предполагает, что вы используете Cognito Identity Pool / Federated Identities для входа в Google. From Amplify docs , federatedSignIn () используется для получения учетных данных AWS непосредственно из Cognito.Федеративные удостоверения, которые отличаются от пользовательских пулов Cognito.Чтобы сохранить пользователей, которые входят через google, вам необходимо интегрировать вход в систему Social с Congito userpool .

. Возможно, вам понадобится пользовательский интерфейс, размещенный на Cognito, чтобы интегрировать вход в систему социальных сетей и пул пользователей.усилить приложение согласно этой проблеме .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...