diff --git a/packages/auth/src/platform_browser/providers/phone.test.ts b/packages/auth/src/platform_browser/providers/phone.test.ts index 9f555920ef3..752aa2a892d 100644 --- a/packages/auth/src/platform_browser/providers/phone.test.ts +++ b/packages/auth/src/platform_browser/providers/phone.test.ts @@ -64,7 +64,7 @@ describe('platform_browser/providers/phone', () => { context('#verifyPhoneNumber', () => { it('calls verify on the appVerifier and then calls the server when recaptcha enterprise is disabled', async () => { const recaptchaConfigResponseOff = { - recaptchaKey: 'foo/bar/to/site-key', + // no recaptcha key if no rCE provider is enabled recaptchaEnforcementState: [ { provider: RecaptchaAuthProvider.PHONE_PROVIDER, @@ -111,7 +111,7 @@ describe('platform_browser/providers/phone', () => { it('throws an error if verify without appVerifier when recaptcha enterprise is disabled', async () => { const recaptchaConfigResponseOff = { - recaptchaKey: 'foo/bar/to/site-key', + // no recaptcha key if no rCE provider is enabled recaptchaEnforcementState: [ { provider: RecaptchaAuthProvider.PHONE_PROVIDER, diff --git a/packages/auth/src/platform_browser/strategies/phone.test.ts b/packages/auth/src/platform_browser/strategies/phone.test.ts index b1fa4efebd3..58a5bdaf6ad 100644 --- a/packages/auth/src/platform_browser/strategies/phone.test.ts +++ b/packages/auth/src/platform_browser/strategies/phone.test.ts @@ -83,7 +83,7 @@ const recaptchaConfigResponseAudit = { ] }; const recaptchaConfigResponseOff = { - recaptchaKey: 'foo/bar/to/site-key', + // no recaptcha key if no rCE provider is enabled recaptchaEnforcementState: [ { provider: RecaptchaAuthProvider.PHONE_PROVIDER, diff --git a/packages/auth/src/platform_browser/strategies/phone.ts b/packages/auth/src/platform_browser/strategies/phone.ts index 904854c4dc8..bf4c1a35ee4 100644 --- a/packages/auth/src/platform_browser/strategies/phone.ts +++ b/packages/auth/src/platform_browser/strategies/phone.ts @@ -68,9 +68,9 @@ import { _castAuth } from '../../core/auth/auth_impl'; import { getModularInstance } from '@firebase/util'; import { ProviderId } from '../../model/enums'; import { - RecaptchaEnterpriseVerifier, FAKE_TOKEN, - handleRecaptchaFlow + handleRecaptchaFlow, + _initializeRecaptchaConfig } from '../recaptcha/recaptcha_enterprise_verifier'; import { _isFirebaseServerApp } from '@firebase/app'; @@ -227,8 +227,17 @@ export async function _verifyPhoneNumber( verifier?: ApplicationVerifierInternal ): Promise { if (!auth._getRecaptchaConfig()) { - const enterpriseVerifier = new RecaptchaEnterpriseVerifier(auth); - await enterpriseVerifier.verify(); + try { + await _initializeRecaptchaConfig(auth); + } catch (error) { + // If an error occurs while fetching the config, there is no way to know the enablement state + // of Phone provider, so we proceed with recaptcha V2 verification. + // The error is likely "recaptchaKey undefined", as reCAPTCHA Enterprise is not + // enabled for any provider. + console.log( + 'Failed to initialize reCAPTCHA Enterprise config. Triggering the reCAPTCHA v2 verification.' + ); + } } try {