PhoneAuthProvider Error with next-firebase-auth and firebaseui-web-react

Viewed 36

I'm getting a lot of errors when I try to use next-firebase-auth with PhoneAuthProvider because of recaptcha.

When I use e-mail provider, it works smoothly. When I try the PhoneAuth, it starts to crash.

Does anyone knows how to solve it?

I'm running "firebase": "^9.8.4" and "next-firebase-auth": "^1.0.0-canary.9"

That's what I'm trying to do:

// /* globals window */
import React, { useEffect, useState } from 'react'
import StyledFirebaseAuth from 'react-firebaseui/StyledFirebaseAuth'
import { getApp } from 'firebase/app';
import { getAuth, EmailAuthProvider, setPersistence, browserSessionPersistence, PhoneAuthProvider, RecaptchaVerifier} from "firebase/auth";


// Note that next-firebase-auth inits Firebase for us,
// so we don't need to.
const firebaseAuthConfig = {
  signInFlow: 'popup',
  // Auth providers
  // https://github.com/firebase/firebaseui-web#configure-oauth-providers
  signInOptions: [
    {
      provider: EmailAuthProvider.PROVIDER_ID,
      requireDisplayName: true,
    },
    {
      provider: PhoneAuthProvider.PROVIDER_ID,
      requireDisplayName: true,
      recaptchaParameters: {
        type: 'image', // 'audio'
        size: 'invisible', // 'invisible' or 'compact'
        badge: 'bottomright' //' bottomright' or 'inline' applies to invisible.
      },
      whitelistedCountries: ['BR'],
      
    },
  ],
  // signInSuccessUrl: '/',
  credentialHelper: 'none',
  callbacks: {
    // https://github.com/firebase/firebaseui-web#signinsuccesswithauthresultauthresult-redirecturl
    signInSuccessWithAuthResult: () =>
      // Don't automatically redirect. We handle redirects using
      // `next-firebase-auth`.
      false,
  },
};

const FirebaseAuth = () => {
  // Do not SSR FirebaseUI, because it is not supported.
  // https://github.com/firebase/firebaseui-web/issues/213
  const [renderAuth, setRenderAuth] = useState(false);
  const auth = getAuth();
  setPersistence(auth, browserSessionPersistence);
  auth.settings.appVerificationDisabledForTesting = true;
  useEffect(() => {
    if (typeof window !== 'undefined') {
      setRenderAuth(true);
    }
    
    
    window.recaptchaVerifier = new RecaptchaVerifier('recaptcha', {
        size: 'invisible',
        callback: (response) => {
            console.log("This is not fired on loading", response)
        }
    }, getAuth(getApp()));


  }, []);

  return (
    <div>
       {renderAuth ? (
        <>
        <StyledFirebaseAuth
          uiConfig={firebaseAuthConfig}
          firebaseAuth={getAuth(getApp())}
        />
        
        </>
        ) : null}
    </div>
  )
}

export default FirebaseAuth

and getting this error:

Unhandled Runtime Error
TypeError: app.auth is not a function

Call Stack
new RecaptchaVerifier
node_modules/@firebase/auth-compat/dist/index.esm2017.js (934:0)
K.phoneSignInStart
node_modules/firebaseui/dist/esm.js (339:309)
L
node_modules/firebaseui/dist/esm.js (172:291)
eval
node_modules/firebaseui/dist/esm.js (341:296)
b
node_modules/firebaseui/dist/esm.js (340:480)
eval
node_modules/firebaseui/dist/esm.js (7:36)
xn.eval
node_modules/firebaseui/dist/esm.js (197:0)
ye
node_modules/firebaseui/dist/esm.js (70:260)
xe
node_modules/firebaseui/dist/esm.js (69:289)
dj
node_modules/firebaseui/dist/esm.js (178:28)
cj.h
node_modules/firebaseui/dist/esm.js (177:457)
ve
node_modules/firebaseui/dist/esm.js (67:60)
HTMLButtonElement.re
node_modules/firebaseui/dist/esm.js (68:95)
HTMLButtonElement.b
node_modules/firebaseui/dist/esm.js (64:356)
0 Answers
Related