Google Recaptcha错误[无效输入响应]

时间:2019-03-15 06:52:55

标签: java spring reactjs

我使用React.js和Java Spring。

我将google recaptcha连接到本地主机上的站点。它工作正常,但一段时间后,它停止了。在Google Recaptcha的网站上,出现此错误。

  

您的网站不检查reCAPTCHA解决方案,这是必需的   正确操作reCAPTCHA。

在React端,我以这种方式连接了验证码

  

“ npm install react-recaptcha-google --save”

并添加了此代码

 <ReCaptcha
        ref={(el) => {this.captchaDemo = el;}}
        size="normal"
        data-theme="dark"            
        render="explicit"
        sitekey="my_site_key"
  />

在Java Spring端,我使用以下代码

 private static final String CAPTCHA_URL = "https://www.google.com/recaptcha/api/siteverify?secret=%s&response=%s";

@Value("${recaptcha.secret}")
    private String secret;

    @PostMapping("/register")
   public ResponseEntity<?> createNewCustomer(@Valid @RequestBody Customer customer, BindingResult result, HttpServletRequest request){
    validator.validate(customer,result);

    ResponseEntity<?> errorMap = exceptionMapHandler.exceptionResponse(result);
    if (errorMap != null) return errorMap;

    String url = String.format(CAPTCHA_URL,secret, request.getParameter("g-recaptcha-response"));
    CaptchaResponseDto captchaResponseDto = restTemplate.postForObject(url, Collections.emptyList(), CaptchaResponseDto.class);

    if (!captchaResponseDto.isSuccess()){
        throw new CaptchaException("Captcha not confirmed");
    }
    Customer saveCustomer = customerService.saveOrUpdate(customer,null);

    return new ResponseEntity<>(saveCustomer, HttpStatus.CREATED);
}

CaptchaResponseDto类

@JsonIgnoreProperties(ignoreUnknown = true)
@Getter
@Setter
public class CaptchaResponseDto {
    private boolean success;

    @JsonAlias("error-codes")
    private Set<String> errorCodes;
}

我决定看看 request.getParameter(“ g-recaptcha-response”)需要什么。 并发现此值为空。

因此,我的网址是我想向google发送的内容

"https://www.google.com/recaptcha/api/siteverify?secret=secret- 
 key&response=null"

结果,我收到以下错误[ invalid-input-response ]

我检查了站点密钥和秘密密钥,它们是正确的。

我再说一遍,这段代码运行完美。

如何解决此问题? 感谢您的帮助!

0 个答案:

没有答案