当サイトは、一部記事に広告を含みます

Next.js(App Router)でreCAPTCHA v3を実装する【Backform利用】

個人開発中の日記アプリでお問い合わせフォームにreCAPTCHA v3を導入したので、その記録をまとめました。

フロントエンドは Next.js (App Router)、フォーム送信には Backform を利用しています。

この記事では、Next.js(App Router)でreCAPTCHA v3を導入するための具体的な手順と、つまずきやすいポイントを解説していきます。

v2とv3の違いはこちらの記事を参照。

あわせて読みたい

Next.js(App Router)でreCAPTCHA v3を実装する【Backform利用】

reCAPTCHA v3 導入手順

1. Google reCAPTCHA 管理画面でキーを発行

Google reCAPTCHAのサイト登録画面にて、サイトを登録。

  • v3 を選択
  • 対象ドメインを登録(本番・ステージング・localhost)

「送信」すると、以下の2種類のキーが発行されます。

  • サイトキー(フロント用)
  • シークレットキー(Backform に登録する)

サイトキーはフロント、シークレットキーは Backform で管理します。

2. Backform 側でシークレットキーを登録

Backform の管理画面で該当フォームの設定画面を開く。
基本設定>Google reCAPTCHA v3の設定より下記を設定し、保存する。

  • Google reCAPTCHA v3を有効にする にチェック
  • 先ほど発行されたシークレットキーを入力

3. Next.js 側でサイトキーを環境変数に設定

Loading code...

4. フロントエンドに reCAPTCHA スクリプトを追加

app/layout.tsx などで <head> 内に script タグを追加します

Loading code...

5. フォーム送信時にトークンを付与

もともと作成していたフォームのコンポーネントに下記を追記。

Loading code...

以上で設定完了しました 🎉

ハマりポイント

ステージングでメール送信がエラーになる問題

  • Backform 側の「送信後リダイレクトURL」が本番になっていた
  • ステージング用に設定していなかったため ?error=reCAPTCHA verification failed が出ていた

ドメイン登録忘れ

  • reCAPTCHA 管理画面で、本番・ステージング・localhost 全て登録しておくこと

v2 と v3 のキーを間違えて使っていた

  • v2 用のキーでは v3 の API が使えないので注意

実装後の挙動

  • 問い合わせ送信時に reCAPTCHA が自動実行され、スパム送信を防げるようになった(はず)
  • ユーザー側は「チェックボックスなし」で自然に送信できるので良い感じ。

この記事が役に立ったら、
記事執筆のコーヒー代として応援してもらえると励みになります☕️

Buy Me A Coffee

関連記事