import { GoogleReCaptcha, GoogleReCaptchaProvider, useGoogleReCaptcha } from 'react-google-recaptcha-v3';
const RECAPTCHA_SITE_KEY: string = 'Ive_added_my_generated_key_here';
export default function SignIn() {
const { executeRecaptcha } = useGoogleReCaptcha();
const [captchaValue, setCaptchaValue] = React.useState<string | null>(null);
const handleSubmit = async (event: React.FormEvent<HTMLFormElement>) => {
event.preventDefault();
if (!validateInputs()) return;
if (!executeRecaptcha) {
console.warn("reCAPTCHA not yet available");
setError('Please complete the CAPTCHA.');
return;
}
try {
const captchaResponse = await axios.post('http://localhost:3001/api/v1/verify-captcha', {
token: captchaValue,
});
if (!captchaResponse.data.success) {
setError('Captcha verification failed. Please try again.');
return;
}
} catch (err) {
console.error('Error during login:', err);
// Optionally display error feedback to the user
dispatch(showAlert({ message: "Login failed. Please try again.", severity: "error" }));
}
};
export default function SignIn() {
<GoogleReCaptchaProvider reCaptchaKey={RECAPTCHA_SITE_KEY}>
<GoogleReCaptcha
onVerify={token => {
setCaptchaValue(token);
}}
/>
</GoogleReCaptchaProvider>
}
}
命令多个API.
当我查看API时,它是V2(指API终点 - > google.com/recaptcha/api2/reload?k=my_generated_keyke),即使我已经实现了V3。
它被连续触发,而是使用:
const {executeRecaptcha} = usegooglerecaptcha();
try { token = await executeRecaptcha(); const captchaResponse = await axios.post('http://localhost:3001/api/v1/verify-captcha', {token: token,}); if (!captchaResponse.data.success) { setError('Captcha verification failed. Please try again.'); return; } } catch (err) { console.error('Error during login:', err); // Optionally display error feedback to the user dispatch(showAlert({ message: "Login failed. Please try again.", severity: "error" })); }