AJAX バージョンの recaptcha を使用しようとしています。Recaptcha.create() は正常に動作していますが、Recaptcha.ajax_verify() を使用しようとすると、不思議なエラーが返されます。
{
is_correct: false,
programming_error: 'Input error: c: Parameter signature was not set'
}
これを自分で試すためのサンプル HTML ファイルを次に示します (独自の公開鍵を使用)。
<!DOCTYPE html>
<html>
<head>
<script src="http://www.google.com/recaptcha/api/js/recaptcha_ajax.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
</head>
<body>
<div id="recaptcha_target"></div>
<input id="recaptcha_submit" type="button" value="Submit" />
<pre id="recaptcha_response"></pre>
<script>
$(document).ready( function () {
Recaptcha.create( '**YOUR_PUBLIC_KEY**', 'recaptcha_target', {
tabindex: 1,
theme: 'clean',
callback: Recaptcha.focus_response_field
});
$('#recaptcha_submit').click( function () {
Recaptcha.ajax_verify( function () {
$('#recaptcha_response').text( 'is_correct: '+arguments[0].is_correct+'\nprogramming_error: '+arguments[0].programming_error );
});
});
});
</script>
</body>
</html>
誰がそのエラーが何であるかの手がかりを持っていますか? recaptcha コードの美化されたバージョンを見たところ、 Recaptcha.ajax_verify() が検証用のリクエストを独自にフォーマットしているように見えます。必要なパラメーターは 1 つだけです: コールバック関数です。足りないものがある場合 (秘密鍵など - フロントエンドの JS コードにあるべきではないと思います)、それがどこに置かれるかわかりません。
検証を行うために独自の PHP レスポンダーを作成するだけでよいことはわかっていますが、完全にクライアント側のものを使用したいと考えています。見た目から、AJAX バージョンはそのような使用法をサポートする必要があります。