Firebase AuthUI: как зарегистрировать PhoneAuthProvider OnVerificationStateChangedCallbacks - PullRequest
1 голос
/ 01 июля 2019

Я использовал Firebase AuthUI в своем приложении для входа в систему с помощью методов Google, телефона и электронной почты.Мне нужно хранить данные в Firestore после успешной аутентификации.

Код, который я использовал для запуска Firebase Auth Screen с перечисленными провайдерами diff:

 startActivityForResult(
     AuthUI.getInstance()
           .createSignInIntentBuilder()
           .setIsSmartLockEnabled(false, true)
           .setLogo(R.drawable.yam_logo_orange_512)
           .setAvailableProviders(Arrays.asList(
               new AuthUI.IdpConfig.EmailBuilder().build(),
               new AuthUI.IdpConfig.GoogleBuilder().build(),
               new AuthUI.IdpConfig.PhoneBuilder().build()
            )).build(),
RC_SIGN_IN);

Но, как я писал выше - яЯ использую AuthUI, который предоставляет кнопки по умолчанию и пользовательский интерфейс - у меня нет владельца поля номера телефона и то же самое для номера телефона.

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)    {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == RC_SIGN_IN) {
        IdpResponse response = IdpResponse.fromResultIntent(data);
        String providerType =  response.getProviderType();

        if (resultCode == RESULT_OK) {
            FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
            if (user != null) {
                switch (providerType) {
                    case Constants.PROVIDER_GOOGLE:
                        account = GoogleSignIn.getLastSignedInAccount(this);
                        if (account != null) {
                            firebaseAuthWithGoogle(account, response.isNewUser());
                        }
                        break;

                    case Constants.PROVIDER_PHONE:
                        if(null!=phoneAuthCredential){
                            signInWithPhoneAuthCredential(phoneAuthCredential, response.isNewUser());
                        }
                        break;

                    case Constants.PROVIDER_EMAIL:
                        break;

                }
            }
        }
    }
}

Пожалуйста, помогите мне в этом.Нужно ли сделать специальный экран для получения номера, а затем зарегистрировать обратный вызов PhoneAuth?

Спасибо, Канак

1 Ответ

1 голос
/ 01 июля 2019

Просто создайте пользовательский экран (UI), чтобы вы могли владеть им, что облегчает доступ к текстовым полям, включая некоторые из них:

if (requestCode == RC_SIGN_IN) {
println(requestCode)
// 
}

и здесь:

if (user != null) {
println(user)
//
}

просто для дальнейшего понимания, где вы можете получать ошибки. Также, когда вы увидите, где находятся ваши ошибки, напечатав значения, вы сможете зарегистрировать обратный вызов PhoneAuth.

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