'Auth with SMS Firebase: Error (auth/argument-error)

I´m trying use the firebase auth with Phone number on Vuejs (Quasar) Applycation. Following the documentation, first step is get the captcha. I believe thaths is where I cant do correctly:

For testing i´m using one single file: Div on html template:

  <div if="recaptcha-container" 
  data-sitekey="6LcsaxsdAAAAAEBn0sPDCEncnU9564MisyRuDzD_"
  data-callback="sendForm"
  data-size="invisible">
  </div>

Bellow, the code for auth in script. For safe i changed the sensive keys. They are correctly, I´m have sucessfly auth by GoogleAuth, using the same keys

import { initializeApp } from "firebase/app"
import { getAuth, RecaptchaVerifier,GoogleAuthProvider,signInWithPopup } from "firebase/auth"

const firebaseConfig = {
  apiKey: "xxxxxxxxxxxxxxxx",
  authDomain: "xxxxxx.firebaseapp.com",
  projectId: "dev-meetups-aa72b",
  storageBucket: "xxxxxxxx.appspot.com",
  messagingSenderId: "xxxxxx",
  appId: "xxxxxxxxxxxxxxxxx",
  measurementId: "G-xxxxxx"
};

// Initialize Firebase
const app = initializeApp(firebaseConfig)
const provider = new GoogleAuthProvider();
const auth = getAuth(app)

Following the docs, and some tutorials, im initialize the captcha method on Created:

 created() {
    this.initilizeCaptcha()
  },

Mehotds:

initilizeCaptcha () {
window.recaptchaVerifier = new RecaptchaVerifier('recaptcha-container', {
  'size': 'invisible',
  'callback': (response) => {
    console.log(response)
    // reCAPTCHA solved, allow signInWithPhoneNumber.
    // ...
  },
  'expired-callback': () => {
    // Response expired. Ask user to solve reCAPTCHA again.
    // ...
  }
}, auth);

As can see, the object RecapthaVerifier, receive the id from recaptcha html div and another params Including, the object auth.

However, when execute this, i got this error:

FirebaseError: Firebase: Error (auth/argument-error).

I can´t find the solution anywhere. If needed, i can provide the auth params.

The complete code https://codepen.io/eltonjhsouza/pen/gOxzvLq



Solution 1:[1]

about this question i´m make a debug in all steps of SDK of Firebase and I managed to solve it.

One of the problems was here:

<div if="recaptcha-container" 
  data-sitekey="6LcsaxsdAAAAAEBn0sPDCEncnU9564MisyRuDzD_"
  data-callback="sendForm"
  data-size="invisible">
 </div>

The id prop of div was type wrong, i typ IF.

Debugging the code in browser, I realized that the method bellow was initiate before the instance auth();

window.recaptchaVerifier = new RecaptchaVerifier('recaptcha-container', {
  'size': 'invisible',
  'callback': (response) => {
    console.log(response)
    // reCAPTCHA solved, allow signInWithPhoneNumber.
    // ...
  },
  'expired-callback': () => {
    // Response expired. Ask user to solve reCAPTCHA again.
    // ...
  }
}, auth);

So i put this call on @click of button.

I hope this question could be help someone.

Solution 2:[2]

For me, the error was because I had HTML comment inside my DIV. This cause error FirebaseError: Firebase: Error (auth/argument-error)

Code which was givving error

 <div
      id="recaptcha-container"
      class="justify-center flex"
    >
      <!-- Recaptcha Widget will be rendered here -->
 </div>

firebase recaptcha error

Code which fixed the error

 <div
      id="recaptcha-container"
      class="justify-center flex"
 ></div>    

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Elton Souza
Solution 2 Adarsh Madrecha