TECH BOX

Technology blog from Web Engineer

この記事は最終更新日から1年以上経過しているため正確ではないかもしれません

Google OAuth申請時の注意事項

YouTubeやSpreadSheetなどのGoogle APIを使って不特定多数にサービスを提供する場合にOAuth認証を行う際、Google OAuthの申請というものが必要になる場合があります。
どういった場合に必要になるかはGoogle Cloud
Platformで作成したプロジェクトの「APIとサービス」内にある「OAuth同意画面」で公開ステータスを「アプリに公開」にして、アプリを編集した際に条件を満たすと要申請になります。
特に利用するGoogle APIでセンシティブな情報を取得する場合には必要となります。

この申請は、何度かやり取りが発生することのほうが多いので2022年9月に自分が申請したときのことをベースに注意点を挙げていきたいと思います。

申請開始時期

OAuth申請は下記の理由から事前に申請を行っておくことができないため、サービスのリリース時期から逆算して2〜3週間前までには申請に必要なシステムを完成させておく必要があります。

  • 申請は実際にOAuthができるURLであること(テスト環境ではなく本番環境)
  • サインイン・ログイン手順の動画を撮影する必要がある

事前準備

  • アクセス解析を利用しているのと同じGoogleドメインでプロジェクトを作成する
    • 申請時にドメインの認証をGoogle Search Consoleでおこなうため同一ユーザーである必要がある
  • 動画を撮影したらYouTubeに公開設定でアップしてURLを送ってくれと言われるのでYouTubeのアカウント
  • 会員制サイトなどの場合は機能を紹介しているページ(申請するドメインと同じでないといけないのでサブドメインなど別ドメインではだめ)

申請時に気をつけること

まず申請を行うには「アプリを公開」にして「アプリを編集」します。

「アプリを編集」で必要な情報を埋めていきます。

アプリケーションのホームページに注意

この画面で一番気をつけないといけないのは「アプリケーションのホームページ」です。
とにかく、サービスのルートでと思うかも知れないですが、とくにログインしないと使えないサービスの場合はログインページに遷移してしまうのでGoogle側から要件を満たしてくださいと言われます。
そのため、サービスのルートではなくこのサービスの機能を紹介しているページを作成してそれをホームページに入力します。
Googleの審査では下記の要件を満たすように言われます。

  • ホームページのURLは検証済みのドメインであること (OAuth同意画面の承認済みドメインと同じドメイン内である必要がある)
  • ユーザーデータを使って何をするのか機能の説明がされている
  • どんな効果があるかが説明されている
  • プライバシーポリシーへのリンクが含まれている
  • URLはGoogle Play Store、Facebook、Instagram、Twitterなどのサードパーティープラットフォームにリンクしていない

つまり、ログインが必要でなくても上記を満たしたページをホームページに設定する必要があります。

Google Search Consoleで承認済みドメインに設定しているドメインを認証

よほど手慣れていないと1回で通ることはありません。
まず最初に申請を送ったら翌日くらいに承認済みドメインをGoogle Search Consoleで認証するように言われます。
作成したプロジェクトのオーナーアカウントでGoogle Search Consoleを使ってドメイン認証してください。

xxxx.firebaseapp.comが存在する場合

Firebase SDKなどを利用した場合には自動でxxx.firebaseapp.comの認証も必要になります。
もし、これが存在する場合はGoogle Search Consoleの「URLプレフィックス認証」でURLを入力すれば自動認証してくれるので心配はありません。

ログイン手順を動画に撮影してYouTubeに公開

申請の2ページ目にある「デモ動画」でOAuthに認証〜どこでAPIを使うのかの手順を動画にしてYouTubeに公開します。
限定公開とかではなく、必ず公開設定で公開です。

ナレーションは不要だがテロップは必要(英語で)

もし、この動画に不備があると下記の条件を満たすようメールが届きます。

  • 動画は一般公開されている必要がある
  • OAuth同意画面は英語である必要がある
  • OAuth同意画面にはアプリ名が表示されている
  • Oauth同意画面のURLバーには、project_numberを含むプロジェクトのクライアントIDが完全に表示されます(Android、iOSのネイティブアプリの場合は不要)
  • Oauthを起動するためのGoogleサインインボタンなど、ユーザーがOAuthを許可するまでの流れが入っている
  • OAuth同意画面に要求しているスコープおよび制限された範囲ごとに機能を示すことで、データがどのように使用されているかを示している
  • 利用するスコープのデータをユーザーがどのようにアクセスするかが動画になっている

OAuth同意画面は英語である必要があるは、Googleログイン時に表示されるページ(ポップアップなど)の左下に言語切替があるので、表示されたら言語を英語に切り替えて英語表示にすればよいです。

project_numberを含むプロジェクトのクライアントIDが完全に表示の部分は、アドレスバーをマウスで選択して最後まで見れるように表示すればよいです。
その際に念の為テロップにclient_id:xxxxxといれておくのも良いです。
自分の場合は下記のようにテロップも入れました。

テロップに必要な英語の粒度

文章を書く必要はないです。
動画内でAPIを利用している箇所で「Get the XXX」みたいなレベルでも通ります。
要所要所でAPIを使っている箇所を説明すればOKです。
翻訳はDeepLで問題なかったです。

Adobeを契約しているのであればAdobe Premiereとかで編集すると良いです。

実際にGoogleがアクセスするかもとのこと

メールのやりとりをしているとExtra App Demonstration Video Tipsとして下記対応するように言われます。

  • OAuthクライアントの中に本番環境に対応できていないものがある場合は、このプロジェクトから削除(Google Cloud Consoleから削除可能)
  • アプリに登録が必要な場合や、ローカルログインがある場合
    • テスト用メールアカウント(xxx@gmail.com)をホワイトリストまたは承認を行う – これにより、アプリの機能をテストできる
    • または、テスト用アカウントのユーザー名とパスワードを提供
  • デモの中で個人的に見えるようにしたり、ビデオのナレーションをする必要はない。キーボードや画面からのデモでOK。
  • 現在、ユーザーに「このアプリはブロックされています」という画面が表示されているため、上記の要件を満たせない場合は、警告画面を一時的に無効にして、上記のビデオの要件をすべて満たすことができるように、必ず電子メールアドレスを提供すること
  • GSuite Marketplaceにまだ公開されていないアドオンのため、上記の要件を満たすことができない場合は、その旨を返信

テスト用メールアカウントのホワイトリストに関しては、OAuthとは別のところで提供しようとしている開発しているシステムでメールアドレスを制限している場合はホワイトリストにしてほしいということです。
普通にGoogleアカウントでログインができるのであれば対応は不要です。

承認までの期間

公式の説明だと3〜4週間かかることもあるとありますが、来たメールを一つ一つ修正していけば1週間位で承認が出ました。
(自分の場合は、ホームページと動画を言われてからはじめて追加したので)

なので、あらかじめ準備していれば2〜3日で承認されることもあると思います。
返信はだいたい翌日とかに来るので結構スピーディーに確認してもらえてるようです。