我想以编程方式调用不可见的reCaptcha挑战。 根据{{3}},我写了以下代码:
<html lang="en">
<head>
<meta charset="UTF-8">
<title>reCaptcha test</title>
<script>
function onReCaptchaSubmit(token) {
alert("reCaptcha challenge response:\n" + token);
}
</script>
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
<style>
.grecaptcha-badge {
display: none;
}
</style>
</head>
<body>
<a href="javascript:void(0);" onclick="grecaptcha.execute();">Challenge</a>
<div class="g-recaptcha"
data-sitekey="*******"
data-callback="onReCaptchaSubmit"
data-size="invisible">
</div>
</body>
</html>
从HTML链接调用和grecaptcha.execute();
以显示reCaptcha challenge弹出窗口。在大多数情况下,它运作良好。但有时,在调用grecaptcha.execute();
后,它会回拨onReCaptchaSubmit()
,而不会显示reCapcha弹出窗口和用户质询。
我该如何解决?
提前谢谢。
答案 0 :(得分:1)
由于recaptcha有一个到期时间,你必须等到你的recaptcha会话到期或在grecaptcha.reset()
内拨打onRecaptchaSubmit
以确保每次用户点击链接时都会出现用户质询:
function onRecaptchaSubmit(token) {
/* any behavior you want */
//...
window.grecaptcha.reset();
}
答案 1 :(得分:0)
您希望每次调用grecaptcha.execute()
时都出现不可见的reCaptcha来显示用户挑战,但是这种方式不起作用。以我的经验,只有对您有疑问时,它才显示出挑战。如果Google确定您是人类,它将跳过显示用户质询并继续进行回调。