【问题标题】:How to get a google recaptcha V3 response如何获得 google recaptcha V3 响应
【发布时间】:2019-06-20 14:34:18
【问题描述】:

我正在使用 Google reCaptcha v3。我正在尝试在我的 aspx 页面上实现它。当我第一次加载我的页面时,我可以获得一个令牌。但是,当我单击一个按钮来处理我的页面时,它会返回“没有 reCaptcha 客户端退出”。 我确实对此进行了谷歌搜索,但没有任何东西可以解决我的问题。如何验证人类或机器人交互?

这是我的 aspx 页面上的内容:

<div id="RegistrationForm">
  <input type="text" id="FirstName" runat="server" value="" valtype="required" maxlength="150" />
  <input type="text" id="LastName" runat="server" value="" valtype="required" maxlength="150" />
  <input runat="server" id="Email" type="text" value="" valtype="required;regex:email" maxlength="350"/>
  <input type="hidden" id="g-recaptcha-response" name="g-recaptcha-response"/> <br />
  <div class="g-recaptcha" data-sitekey="SiteKey" data-callback="submit"></div>
  <input id="btnProcessOrder" type="button" name="ProcessOrder" onclick="confirmed = false;capt();" value="Save" />
</div>

这是我尝试过的

<script src="https://www.google.com/recaptcha/api.js?render=SiteKey"></script>
<script type="text/javascript">
    //so when i load the page it gets my token and i can assign the value to g-recaptcha-response
   grecaptcha.ready(function() {
       grecaptcha.execute('SiteKey', { action: 'homepage' }).then(function (token) {
           console.log(token);
           document.getElementById('g-recaptcha-response').value = token;

  });
});


 Then when i try to verify the response as follows i get the error or it just does nothing:
function capt() {
var response = grecaptcha.getResponse();
$.ajax({
   type: "POST",
   url: 'https://www.google.com/recaptcha/api/siteverify', 
   data: {"secret" : "SecretKey", "response" : response, "remoteip":"localhost"},
   contentType: 'application/x-www-form-urlencoded',
   success: function(data) { console.log(data); }
});// i call this function on my button
}
</script>

我发现的大部分代码都是用于 php 的,我不能使用它。我怎样才能让它正常工作? 非常感谢您的回复

【问题讨论】:

  • 控制台grecaptcha.getResponse(); 告诉我们你得到了什么?
  • @Farhad 它说“ƒ (M,v){if(v=(M=void 0===M?pU():M,window.___grecaptcha_cfg.clients)[M], !v)throw Error("Invalid reCAPTCHA client id:"+ M);return da(v.id).value}" 但我使用的站点密钥与他们提供的完全相同
  • grecaptcha.getResponse(); 正在返回一个函数。看看你打电话给response()会发生什么;你的console.log(data); 输出的是什么?
  • 它甚至没有到达那个控制台,它只是在 grecaptcha.getResonse() 处中断
  • 你确定你正确包含/recaptcha/api.js吗?,你能确认你是否设置了grecaptcha.render吗?如果是,你可以有一个回调参数,例如verifyCallBack,然后是verifyCallBack的正确函数

标签: javascript performance captcha recaptcha-v3


【解决方案1】:

根据上述cmets:

你创建一个渲染函数如下

grecaptcha.render('example3', {
    'sitekey' : 'your_site_key',
    'callback' : verifyCallback,
});

然后要从验证码中获取响应,您需要创建一个变量来存储数据:

var verifyCallBack = function(response) { 
    console.log(response); 
};

【讨论】:

  • 它显示 ERROR for site owner: Invalid key type on the grecaptcha.rendor 方法。如果它是他们给我的站点密钥,这真的没有任何意义,我什至删除并创建了一个新密钥
  • @marry 确保您没有对密钥施加限制,或者是否是 v2 或 v3 版本的 recaptcha 的正确密钥,Setting Doc。我还推荐阅读reCAPTCHA doc,维护得很好。
【解决方案2】:

这里我们已经有一个相同类型的问题: How to implement reCaptcha V3 in ASP.NET 请检查这些答案。

您也可以查看此演示项目以供参考。https://github.com/NIHAR-SARKAR/GoogleRecaptchav3-example-In-asp.net

【讨论】:

    猜你喜欢
    • 2018-10-28
    • 2022-01-19
    • 2019-08-10
    • 2015-12-28
    • 2020-12-22
    • 2019-02-22
    • 2018-10-28
    • 1970-01-01
    • 2019-09-22
    相关资源
    最近更新 更多