2

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 バージョンはそのような使用法をサポートする必要があります。

4

0 に答える 0