るいもの戯れ言
#322
2017/03/12 01:14

コメント投稿のところに、興味本位でreCAPTCHAを付けてみた。方法はこのサイトが詳しい。ただ、うまくいかないところもあったので補足。

上記の解説では以下のようにsiteverifyでGETリクエストが使えるように見えるが、

https://www.google.com/recaptcha/api/siteverify?secret={Secret key}&response={認証コード}

Googleのサイトでは、POSTしろと書かれている。おそらく昔はGETで可能だったのだろうが、さすがにsecret渡すのにGETは、まずかろうということで変更されたと思われる。

あと、以下のようにコールバックを指定すると、reCAPTCHAがチェックされた時にコールバックを受けられるのだが、

<div class="g-recaptcha" data-callback="syncerRecaptchaCallback" data-sitekey="{あなたのSite key}"></div>

コメント投稿のボタンを最初はdisabledにしておいて、これを使って、disabledを外すようなロジックを入れると、その後、サーバ側でsiteverifyを呼び出しても失敗するようだ。

これは憶測でしかないが、コールバック指定をする場合、認証コードがコールバック関数に渡されることから、そのコールバック内でsiteverifyが実行されることを想定しているのではないかと思われる。このためコールバック関数が終わった段階で、認証(siteverify)のAPIを発行できる期間も終わっており、それ以降のsiteverifyは失敗になるのではないかと。

ところでreCAPTCHAは、機械学習を使うことで、チェックするだけでokになった画期的なCAPTCHAだという触れこみだったように思うのだが、自分がやると毎回画像判定が表示される。はて。

Milka
2017/03/12 02:51
OKです。
Milka
2017/03/12 02:50
Yay!