Google OAuth(Googleカレンダー・Googleドライブなど)と連携するWebアプリを一般公開して皆が利用できるようにする場合、プライバシーポリシーの整備は必須。(めんどくさかった)
Google側の審査(OAuth App Verification)を通過するためにも、プライバシーポリシーの記載内容が厳しくチェックされます。
この記事では、予定表スキャナーを作った際の経験をもとに、次回また作るときのチェックリストとしてまとめます。
※予定表スキャナーは日本向けのwebアプリです。全世界向けとなると話が変わるので注意
プライバシーポリシーに必要な2つのパート
Google OAuth連携アプリのプライバシーポリシーは、大きく次の2つに分かれます。
- ブログ・サイト共通の基本項目
- Googleサービス連携アプリ固有の項目(←ここが審査の核心)
① ブログ・サイト共通の基本項目
チェックリスト
- [ ] 運営者情報(サイトURL・ハンドルネーム・連絡先)
- [ ] コメント機能に関するデータ収集の説明
- [ ] Cookieの使用について
- [ ] 他サイト埋め込みコンテンツについて
- [ ] データの保存期間
- [ ] ユーザーのデータに対する権利(エクスポート・削除リクエスト)
- [ ] データの送信先(スパム検出サービスなど)
- [ ] 広告(Google AdSense使用の場合はその旨)
上記の項目はブログ関連の記載項目なので、一部だけ説明し、それ以外を割愛します。
記載例(運営者情報)
サイトURL:https://example.com
運営者:(ハンドルネーム)
お問い合わせ:example@gmail.com
記載例(広告:Google AdSense)
Google AdSenseを使っている場合は、Cookieとの関連で一緒に説明するとわかりやすい。 「Cookieを使う」→「広告にも使われる」という流れで読者が理解しやすいため、 Cookie説明の直後か、広告セクションをひとまとめにして記載するのがおすすめ。
当サイトはGoogle AdSenseを利用しており、
Googleおよびそのパートナーが広告配信のためにCookieを使用しています。
このCookieにより、訪問者の過去のアクセス情報に基づいた広告が表示される場合があります。
Cookieを使用した広告配信を無効にしたい場合は、
Googleの広告設定ページ(https://adssettings.google.com/)からオプトアウトできます。
ポイント: AdSenseはGoogleが広告主とユーザーの間に立つ仕組みのため、 「Googleおよびそのパートナー」という表現が正確。 オプトアウトURLの記載はAdSenseのポリシー上も推奨されている。
② Googleサービス連携アプリ固有の項目
ここがOAuth審査で最も重要視される部分です。Google社のポリシーに準拠した記載が求められます。
チェックリスト
- [ ] アプリの概要説明
- [ ] アクセスするGoogleデータの種類(スコープの明示)
- [ ] データの利用目的(限定的であることを明示)
- [ ] 第三者へのデータ送信・共有について
- [ ] データの保存と保護の方法
- [ ] データの保持期間と削除方法
1. アプリの概要説明
何をするアプリなのかを1〜2文で明確に書く。
「予定表スキャナー」は、ユーザーがアップロードした予定表画像をAIで解析し、
Googleカレンダーにイベントを自動登録するWebアプリです。
2. アクセスするGoogleデータの種類
スコープ(権限)を具体的に記載すること。 「なんとなく広く取る」のではなく、最小限のスコープだけ使っていることを示す。
OAuth2認証によりユーザーの同意を得た上で、以下のスコープにアクセスします。
・Googleカレンダー(https://www.googleapis.com/auth/calendar.events)
操作はイベントの新規作成のみで、既存イベントの読み取り・削除は行いません。
ポイント:
calendar.events(イベントのみ)とcalendar(全カレンダー)は別物。 必要最小限のスコープを使っていることを明示するとGoogleの審査に通りやすい。
3. データの利用目的
マーケティング・広告・分析目的に使わないことを明記する。 これはGoogleのポリシーで厳しく問われる部分。
取得した権限は、ユーザーが指定したイベントをGoogleカレンダーに登録する
目的のみに使用します。
マーケティング・広告・分析など、その他の目的には一切使用しません。
第三者への提供は行いません。
4. 第三者へのデータ送信・共有
AIや外部APIを使っている場合、どこにデータを送っているかを明記する。
ユーザーがアップロードした画像は、予定抽出のためGoogle Gemini API(Google LLC)に
送信されます。
それ以外の第三者にGoogleユーザーデータを販売・共有・提供することはありません。
ポイント: Gemini APIもGoogleのサービスだが、「どのサービスに送っているか」を 具体的に書くことが重要。
5. データの保存と保護
データをどこに・どのように保存しているかを具体的に書く。 「保存しない」ことも立派なセキュリティ対策として記載できる。
・認証トークンおよびGoogleアカウント情報は、サーバーの一時メモリ上にのみ保持
・データベースやファイルへの永続的な保存は行わない
・アップロード画像はAI解析後、サーバーに保持しない
・すべての通信はHTTPS(TLS)で暗号化
・アクセストークンはサーバー側でのみ管理し、クライアント(ブラウザ)には送信しない
6. データの保持期間と削除方法
ユーザーがデータを削除・連携解除できる方法を書く。
・ログアウトにより即時削除されます
・Googleアカウントのセキュリティ設定からいつでも連携を解除できます
→ https://myaccount.google.com/permissions
OAuth審査を通過するための追加ポイント
実際に審査を受けて気づいたことをまとめます。
スコープは最小限に
広いスコープ(例:calendar)より狭いスコープ(例:calendar.events)の方が 審査が通りやすく、ユーザーへの信頼感も上がる。
「使わないこと」を明示する
「〜はしません」「〜には使いません」という否定的な記述が審査では重要。 やっていないことをちゃんと書く。
Googleのポリシーページへのリンクを活用
データ削除の案内としてhttps://myaccount.google.com/permissionsを プライバシーポリシー内に記載しておくと親切かつ審査でも評価される。
まとめ:作成時の確認フロー
1. アプリが使うスコープを確定する
↓
2. そのスコープで何ができて、何をしないかを整理する
↓
3. 外部APIへのデータ送信先を全部リストアップする
↓
4. データの保存場所・期間・削除方法を決める
↓
5. 上記チェックリストに沿ってプライバシーポリシーを書く
↓
6. OAuth審査の申請時にプライバシーポリシーのURLを記載する
言うても、何か問題があればGoogleさんから指摘が入るので、その指摘に沿って修正するのですが、丁寧に何の項目を書けとか書かれていないので、このCL(チェックリスト)を使って漏れがないか確認してもらえればいいかなぁと思います。

コメント