import React,{useState} from "react";
import { Link } from "react-router-dom";
import Checkbox2 from "../Checkbox2";
import "./MacBookAir3.css";
import { initializeApp } from "firebase/app";
import { getAuth, RecaptchaVerifier, signInWithPhoneNumber } from "firebase/auth";
// Initialize the app using your firebase config
const firebaseConfig = {
....
};
const app = initializeApp(firebaseConfig);
const auth = getAuth(app);
window.recaptchaVerifier = new RecaptchaVerifier('recaptcha-container', {
'size': 'invisible',
'callback': (response) => {
// reCAPTCHA solved, allow signInWithPhoneNumber.
onSignInSubmit();
}
}, auth);
const phoneNumber = getPhoneNumberFromUserInput();
const appVerifier = window.recaptchaVerifier;
signInWithPhoneNumber(auth, phoneNumber, appVerifier)
.then((confirmationResult) => {
// SMS sent. Prompt user to type the code from the message, then sign the
// user in with confirmationResult.confirm(code).
window.confirmationResult = confirmationResult;
// ...
}).catch((error) => {
// Error; SMS not sent
// ...
});
function MacBookAir3(props) {
const {
overlapGroup5,
zoopla,
verificationCodeRe,
enterYourEmailTo,
inputType,
inputPlaceholder,
gdprAndPrivacy,
tC,
sendVerificationButton,
checkbox21Props,
checkbox22Props,
} = props;
const [phoneNumber, setPhoneNumber] = useState("");
const [expandForm, setExpandForm] = useState(false);
const handleSubmit = (event) => {
// prevent the default behavior of the form submission
event.preventDefault();
// Get the value of the phone number input field
const phoneNumber = document.querySelector("input[name='phone-number']").value;
// Update the phoneNumber state with the value entered by the user
//getPhoneNumberFromUserInput(phoneNumber);
// check if both checkboxes are ticked
const checkboxInputs = document.querySelectorAll("input[type='checkbox']");
if (!checkboxInputs || checkboxInputs.length !== 2 || !checkboxInputs[0].checked || !checkboxInputs[1].checked) {
// one or both checkboxes are not ticked, show an alert
alert("Please conrirm that you have read the Terms & Condition and GDPR by ticking both the boxes");
return;
}
// phone-number input is filled in and both checkboxes are ticked, navigate to the link
window.location.href = "http://localhost:1234/macbook-air-4";
};
return (
<div className="container-center-horizontal">
<form className="macbook-air-3 screen" id="form5" name="form5" action="form5" method="post">
<div className="overlap-group5-3" style={{ backgroundImage: `url(${overlapGroup5})` }}>
<div className="authentication"></div>
<div className="overlap-group-7">
<div className="zoopla inter-bold-black-32px">{zoopla}</div>
<p className="verification-code-re inter-normal-black-24px">{verificationCodeRe}</p>
<p className="enter-your-email-to inter-normal-black-16px">{enterYourEmailTo}</p>
</div>
<div className="overlap-group1-5">
<input
ref={(input) => { this.phoneNumberInput = input; }}
className="email-1 inter-bold-silver-16px"
name="phone-number"
placeholder={inputPlaceholder}
type={inputType}
required
/>
</div>
<Link to="/macbook-air-7">
<div className="group-16">
<div className="overlap-group2-4">
<div className="rectangle-32"></div>
<div className="gdpr-and-privacy inter-bold-black-16px">{gdprAndPrivacy}</div>
</div>
</div>
</Link>
<Link to="/macbook-air-8">
<div className="group-17">
<div className="overlap-group3-2">
<div className="rectangle-32-1"></div>
<div className="tc inter-bold-black-16px">{tC}</div>
</div>
</div>
</Link>
<Checkbox2 className={checkbox21Props.className} />
<Checkbox2 className={checkbox22Props.className} />
<a href="javascript:SubmitForm('form5')">
<div className="group-6-2">
<div className="overlap-group4-1">
<button type="button" onClick={handleSubmit} className="button-2"></button>
<div id="recaptcha-container"></div>
<div className="send-verification-code inter-bold-white-16px">. {sendVerificationButton}</div>
</div>
</div>
</a>
</div>
</form>
</div>
);
}
export default MacBookAir3;
and here the error and i am getting
Firebase: Error (auth/argument-error). ▼ 3 stack frames were expanded. createErrorInternal node_modules/@firebase/auth/src/core/util/delay.ts:57:3 _assert node_modules/@firebase/auth/src/core/util/emulator.ts:26:11 new RecaptchaVerifier http://localhost:1234/index.3d214d75.js:253229:9 ▲ 3 stack frames were expanded. 2EymT.react/jsx-dev-runtime /__parcel_source_root/components/MacBookAir3/index.jsx:25:27 22 | 23 | const auth = getAuth(app); 24 |
25 | window.recaptchaVerifier = new RecaptchaVerifier('recaptcha-container', { | ^ 26 | 'size': 'invisible', 27 | 'callback': (response) => { 28 | // reCAPTCHA solved, allow signInWithPhoneNumber
dependencies
"firebase": "^9.13.0",
"react": "^18.2.0",
I am looking to verify users by obtaining user phone numbers and sending out otp with the help of firebase auth. any help in getting this fixed would be much appreciated.
Put your recaptchaVerifier into function like