はじめに
Google OAuth(カレンダー、タスク等)を使ったWebアプリを開発していると、必ずぶつかる壁が**本番認可(Verification)**です。
テストモードでは100人までしかユーザーを追加できず、それ以上のユーザーにサービスを提供するにはGoogleの審査を通過する必要があります。
この記事では、実際に審査申請を行った経験をもとに、センシティブスコープを使用する場合の申請手順を解説します。
この記事で分かること
- Google OAuth本番認可の全体像
- センシティブスコープの審査要件
- デモ動画の作成方法
- Written explanation(説明文)の書き方
- 審査申請の具体的な手順
- よくあるリジェクト理由と対策
対象読者
- Google Calendar / Tasks API を使ったアプリを開発している方
- OAuth同意画面が「テストモード」のままの方
- 100人以上のユーザーにサービスを提供したい方
1. Google OAuth認可の仕組み
1.1 なぜ審査が必要なのか
Googleは、ユーザーのデータを守るために、外部アプリがGoogle APIにアクセスする際に審査を行っています。
┌─────────────────────────────────────────────────────────┐
│ OAuth同意画面 │
├─────────────────────────────────────────────────────────┤
│ Publishing Status │
│ ├── Testing(テスト): 最大100ユーザー、未審査 │
│ └── In Production(本番): ユーザー数無制限、審査済み │
└─────────────────────────────────────────────────────────┘
1.2 スコープの種類と審査期間
| スコープ種別 | 例 | 審査期間 | 審査内容 |
|---|---|---|---|
| 非センシティブ | openid, email, profile | 即時〜数日 | 自動審査 |
| センシティブ | calendar, tasks | 1〜4週間 | 手動審査 |
| 制限付き | gmail.readonly, drive | 4〜6週間以上 | セキュリティ監査(CASA) |
今回のケースでは、以下のセンシティブスコープを使用しています:
calendar.readonly - カレンダーの読み取り
calendar.events - カレンダーイベントの読み書き
tasks - タスクの読み書き
2. 事前準備
2.1 必要なもの
審査申請前に、以下を準備しておきます:
| 項目 | 要件 |
|---|---|
| アプリURL | HTTPSで公開されていること |
| プライバシーポリシー | Googleデータの取り扱いを明記 |
| 利用規約 | サービスの利用条件を明記 |
| アプリロゴ | 120x120px以上 |
| デモ動画 | 1〜5分、YouTube限定公開 |
2.2 プライバシーポリシーの必須記載事項
Googleの審査で最も重要なのがプライバシーポリシーです。以下の内容が含まれているか確認してください:
## プライバシーポリシーに必要な記載
1. 収集するGoogleデータの種類
- カレンダーイベント(タイトル、日時、参加者)
- タスク(タイトル、期限、完了状態)
2. データの使用目的
- タスクボードでの予定表示
- タスク管理機能との連携
3. データの共有先
- 第三者への共有はしない旨を明記
4. データの保持期間
- 連携解除時の削除ポリシー
5. ユーザーの権利
- データ削除の依頼方法
- 連携解除の方法
6. 連絡先
- 問い合わせ先メールアドレス
3. デモ動画の作成
3.1 動画の要件
| 項目 | 要件 |
|---|---|
| 長さ | 1〜5分程度(長すぎると見てもらえない) |
| 形式 | MP4 |
| 言語 | 英語推奨(日本語でも可、英語字幕推奨) |
| 公開設定 | YouTube限定公開(Unlisted) |
3.2 録画すべき内容
審査員に「なぜこのスコープが必要か」を示すことが重要です:
1. [0:00-0:30] アプリ紹介・ログイン
- トップページを表示
- 「Googleでログイン」をクリック
2. [0:30-1:00] OAuth同意画面
- 要求するスコープが表示されている画面
- 「許可」をクリック
3. [1:00-2:00] スコープ使用例(最重要)
- calendar.readonly: カレンダー一覧の表示
- calendar.events: イベントの作成・更新
- tasks: タスクの同期
4. [2:00-2:30] 連携解除方法
- 設定画面で「連携を解除」ボタンを見せる
3.3 録画のコツ
# macOS の場合
QuickTime Player → ファイル → 新規画面収録
# Windows の場合
Windows + G → 録画ボタン
ポイント:
- ゆっくり操作する(審査員が画面を確認できるように)
- 全画面で録画(文字が読めるように)
- 音声はなくてもOK(字幕で説明)
3.4 英語字幕の追加
英語が苦手な方でも、以下のツールで簡単に字幕を追加できます:
| ツール | 特徴 |
|---|---|
| Canva | 無料、直感的なUI |
| CapCut | 無料、自動字幕機能あり |
| Vrew | AI自動字幕、翻訳機能あり |
3.5 YouTubeへのアップロード
1. YouTube Studio (https://studio.youtube.com) にアクセス
2. 「作成」→「動画をアップロード」
3. タイトル: [App Name] - Google OAuth Demo
4. 説明:
OAuth consent screen demonstration for Google verification.
App: [Your App Name]
Scopes: Google Calendar, Google Tasks
5. 公開設定: 限定公開(Unlisted)← 重要!
6. URLをコピー
4. Written Explanation の書き方
4.1 基本構成
審査ではなぜそのスコープが必要かを説明する文書が求められます:
1. アプリの概要
2. 対象ユーザー
3. 各スコープの使用理由
4. データの取り扱い
5. ユーザーのコントロール
6. 連絡先
4.2 テンプレート(センシティブスコープ用)
実際に審査に提出したテンプレートを共有します:
Our application, [Your App Name], is a [category] tool for [target users].
We request the following scopes:
- openid, email, profile: User authentication via Google Sign-In
- https://www.googleapis.com/auth/calendar.readonly: To display calendar events
- https://www.googleapis.com/auth/calendar.events: To sync completion status back
- https://www.googleapis.com/auth/tasks: To import and manage Google Tasks
Users can:
- Sign in securely using their Google account
- View their Google Calendar events within our task board
- Import events as tasks and sync completion status back to calendar
- Manage Google Tasks alongside calendar events
We ONLY access calendar and tasks data when users explicitly enable the integration.
Users can disconnect Google services at any time from their settings page.
We do not share any Google data with third parties.
Privacy Policy: https://your-domain.com/privacy
Demo Video: https://www.youtube.com/watch?v=xxxxx
4.3 スコープごとの理由
各スコープに対して、個別の理由も入力が必要です:
| スコープ | 理由の例 |
|---|---|
| calendar.readonly | To display the user's Google Calendar events in the task board, allowing users to see their schedule alongside tasks. |
| calendar.events | To sync task completion status back to Google Calendar. When users complete a task imported from calendar, we update the event with a visual marker. |
| tasks | To import Google Tasks into the task board and allow users to manage all their tasks in one place. |
5. 審査申請の手順
5.1 GCP Console での操作
1. Google Cloud Console (https://console.cloud.google.com)
2. APIs & Services → OAuth consent screen
3. 「PUBLISH APP」をクリック
4. 確認ダイアログで「CONFIRM」
5.2 Prepare for verification
「PUBLISH APP」後、以下の情報入力画面が表示されます:
| 項目 | 入力内容 |
|---|---|
| App homepage | https://your-domain.com |
| Privacy policy URL | https://your-domain.com/privacy |
| Terms of service URL | https://your-domain.com/terms |
| YouTube video URL | https://www.youtube.com/watch?v=xxxxx |
| Written explanation | 上記テンプレートを使用 |
5.3 質問への回答
申請時に以下の質問に回答します:
| 質問 | 回答 |
|---|---|
| アプリは個人専用ですか? | いいえ(100人以上に公開する場合) |
| アプリは社内専用ですか? | いいえ(外部ユーザー向けの場合) |
| 開発/テスト/ステージング専用? | いいえ(本番公開する場合) |
| WordPress Gmail SMTPプラグイン? | いいえ |
5.4 Submit for verification
すべて入力後、「Submit for verification」をクリックして申請完了です。
6. 審査期間と対応
6.1 審査期間の目安
| スコープ種別 | 期間 | 備考 |
|---|---|---|
| センシティブのみ | 4〜6週間 | 手動審査 |
| 制限付き含む | 4〜6週間以上 | CASA監査が必要 |
申請後、3〜5日以内にGoogleから最初の連絡があります。
6.2 審査ステータスの確認
GCP Console → OAuth consent screen で確認:
確認中 - 審査キューに入っている
審査中 - 審査員がレビュー中
追加情報要求 - 質問や修正依頼あり
承認済み - 審査通過!
6.3 追加質問への返信テンプレート
Subject: Re: OAuth Verification - [Your App Name]
Dear Google OAuth Team,
Thank you for your review.
[質問への具体的な回答]
Additional information:
- [必要に応じて補足情報]
Please let me know if you need any further clarification.
Best regards,
[Your Name]
[Your Email]
7. よくあるリジェクト理由と対策
7.1 リジェクト理由一覧
| リジェクト理由 | 対策 |
|---|---|
| プライバシーポリシーが不十分 | 収集データ、使用目的、削除方法を明記 |
| デモ動画が不明確 | 全画面で録画、各スコープの使用例を見せる |
| スコープの正当性が不明 | Written explanationで具体的なユースケースを説明 |
| ブランディング問題 | アプリ名に「Google」を含めない、ロゴを無断使用しない |
7.2 特に注意すべき点
NG例:
- アプリ名: "Google Calendar Manager" ← Googleを含む
- ロゴ: Googleのロゴを使用 ← 無断使用
- 説明: "Official Google Calendar app" ← 公式を装う
OK例:
- アプリ名: "MyApp Calendar Sync"
- ロゴ: オリジナルのデザイン
- 説明: "Integrates with Google Calendar"
8. 審査通過後の確認
8.1 ステータス確認
OAuth consent screen で確認:
- Publishing status: In production
- Verification status: Verified
8.2 動作確認
1. テストユーザー以外のGoogleアカウントでログイン
2. OAuth同意画面が表示される
3. 「このアプリは確認されていません」の警告が出ない
4. 正常にログインできる
まとめ
Google OAuth本番認可の取得には、以下のステップが必要です:
- 事前準備: プライバシーポリシー、利用規約、アプリロゴ
- デモ動画: 各スコープの使用例を1〜5分で録画
- Written explanation: なぜそのスコープが必要かを英語で説明
- 審査申請: GCP ConsoleでPUBLISH APP → Submit for verification
- 審査対応: 追加質問に回答(4〜6週間)
センシティブスコープを使用する場合、審査には時間がかかりますが、丁寧に準備すれば必ず通過できます。
参考リンク
- OAuth consent screen overview
- OAuth API verification FAQs
- Verification for sensitive scopes
- Google API Services User Data Policy
関連記事
タグ: Google, OAuth, GCP, 認証, API, Next.js, セキュリティ