Ошибка при получении доступа Firebase Phone Auth OTP

#java #android #firebase #flutter #authentication

#java #Android #firebase #флаттер #аутентификация

Вопрос:

Я пытаюсь реализовать проверку телефона Firebase. Я включил проверку телефона в консоли firebase. Я сгенерировал хранилище ключей и добавил подписи SHA в консоль.

зависимости:

 dependencies {
    def multidex_version = "2.0.1"
    implementation platform('com.google.firebase:firebase-bom:26.0.0')
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'com.google.firebase:firebase-analytics'
    implementation "androidx.multidex:multidex:$multidex_version"
    implementation 'com.google.firebase:firebase-auth'
    implementation 'com.google.firebase:firebase-core'
    implementation 'com.google.firebase:firebase-analytics'
    implementation 'com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava'

}
  

phone_verification.dart

                 await FirebaseAuth.instance.verifyPhoneNumber(
                  phoneNumber: ' 1234567890',

                  verificationCompleted: (PhoneAuthCredential credential) {
                    print('verificationCompleted');
                    
                  },
                  verificationFailed: (FirebaseAuthException e) {
                    print('verificationFailed');
                    if (e.code == 'invalid-phone-number') {
                      print('The provided phone number is not valid.');
                    }
                    else {
                      print('Some error occoured: $e');
                    }
                  },
                  codeSent: (String verificationId, int resendToken) async {
                    print('codeSent');

                    // Update the UI - wait for the user to enter the SMS code
                    String smsCode = '123456';

                    // Create a PhoneAuthCredential with the code
                    PhoneAuthCredential phoneAuthCredential = PhoneAuthProvider.credential(verificationId: verificationId, smsCode: smsCode);
                  
                  },
                  timeout: const Duration(seconds: 60),
                  codeAutoRetrievalTimeout: (String verificationId) {
                    print("Timeout: $verificationId");
                  },
                );
  

При выполнении вышеуказанного блока выдается следующая ошибка.
Вывод на консоль:

 E/FirebaseAuth: [GetAuthDomainTask] Error getting project config. Failed with {
      "error": {
        "code": 400,
        "message": "INVALID_CERT_HASH",
        "errors": [
          {
            "message": "INVALID_CERT_HASH",
            "domain": "global",
            "reason": "invalid"
          }
        ]
      }
    }
     400
V/FA: Recording user engagement, ms: 1165
E/zza: Failed to get reCAPTCHA token - calling backend without app verification
  

Комментарии:

1. Вместе с журналом ошибок, пожалуйста, добавьте более подробную информацию о том, что вы пытаетесь сделать. Добавьте фрагмент кода, из которого вы получаете эту ошибку

2. Я сталкиваюсь с той же проблемой. Есть идеи?

3. Столкнулся с той же проблемой..

4. Та же проблема. Похоже, это связано с библиотекой аутентификации firebase app Gradle. Однако у меня это не сработало.

5. вы добавили sha1 в консоль firebase?

Ответ №1:

@CubeRootX и @user13864571

Ваша проблема связана с ключами SHA1 и SHA256. Вы должны добавить их для аутентификации своих сертификатов.

Goto

  • Консоль Firebase вашего проекта
  • Аутентификация
  • Настройка проекта (с помощью кнопки настройки рядом с обзором проекта)
  • Добавить отпечаток пальца
  • Добавьте значения SHA-1 и SHA-256 для вашего хранилища ключей.

Вы можете получить хранилища ключей из gradle следующим образом.

./gradlew signingReport

Прочитайте это для получения дополнительной информации: https://firebase.google.com/docs/auth/android/phone-auth#enable-app-verification

Ответ №2:

Ошибка 400 означает неправильный запрос, это может быть вызвано любой из следующих трех причин:-

  1. Проверьте, включена ли опция аутентификации по телефону в консоли firebase или нет. Включите его.
  2. Проверьте, включен ли API проверки устройств Android в облачной консоли Google или нет. Включите его.
  3. Проверьте, добавлены ли SHA-1 и SHA-256 в ваш проект firebase или нет. Добавьте его следующим образом:

Откройте свой проект в firebase console -> Перейдите в настройки проекта -> Нажмите «Добавить отпечаток пальца» (внизу страницы) -> Добавьте туда значения SHA-1 и SHA-256.

Изображение для справки

Вы можете получить значения SHA вашего проекта Android Studio следующим образом:-

Нажмите на gradle в правом верхнем углу -> задача -> android -> signingReport -> Получите значения SHA внизу после запуска signingReort Изображение для справки

Следуйте документации, если проблема не решена.

Ответ №3:

Включить опцию телефона в консоли Firebase в разделе Аутентификация

Ответ №4:

Я застрял здесь на неделю только для того, чтобы найти ключ, который я использовал, был ограничен другим приложением и поэтому терпел неудачу при попытке использовать его в моем приложении. Итак, я сначала снял ограничение на вкладке «Учетные данные» в проверке устройства Android, и все вернулось к норме

Ответ №5:

Нам нужно добавить один дополнительный шаг к ответу @Anat Bharti: включить API проверки устройства GCS в вашем проекте

Включите GCS Device Verification API в вашем проекте. Это решает все, вы даже не попросили проверить capcha на вашем физическом устройстве.