【OAuth申請実録】
Google Fit歩数データアクセスのための前提と実務


(最終更新日:

記事イメージ

AndroidアプリやWebアプリなどで、Google FitやGカレンダーなどGoogle製品のデータにアクセスしたいという場面は相応にあります。

そういった中、ユーザーにとってプライバシー上重要度が高いデータ(センシティブデータ)であるとGoogleが認めるものへのアクセス実現には、GoogleによるOAuth認証審査を受ける必要があります。これが例えばAndroidアプリ審査などとは比べ物にならないくらいデベロッパーの工数的・時間的負担となります。

今回、ようやく認証通過しましたので、審査作業の実録やコツ、手続きの方法と実際の流れを紹介します。

尚、ここで紹介したケースでは、実際の歩数取得処理にFlutterのHealthパッケージを使用しています。詳細や認証機構について以下の関連記事に詳しく述べています。必要な方は合わせてご参考ください。

関連記事:【Flutter/Health】端末から歩数情報を取得 - 前提知識と実装手順・つまずきポイントを紹介

また、最近はGoogle審査に加えて、後続ステップでCASAによるTier2スキャンが必要となっています。手続きについて以下の関連記事をご参考ください。

関連記事:CASAのTier2スキャン手順(Google API OAuth対策)

前提の整理:認証が必要なケースと、認証審査を受ける準備

まずは、どのような場合にこの作業が必要なのかと、その内容を整理します。

Google製品内のセンシティブデータへのアクセスには、GoogleによるOAuth同意画面の認証を受ける必要あり

Googleは製品内のデータを区分分けしており、プライバシー上重要度が高いデータは「機密性の高いスコープ」と区分しています。(Fitnessデータは歩数も含めて全般的にこれに該当)

機密性の高いスコープへのアクセスのためにはGoogleによるOAuth認証を受ける必要があります。要は、データの利用がGoogleのプライバシー基準に準拠しているか審査するという趣旨です。

iOSの場合だと適切な説明文とユーザーの許諾さえ受ければ同等データ(例えばヘルスケアアプリのデータなど)にアクセス可能になることを考えると、Googleの方はかなり慎重なプロセスでデベロッパーの手間がかかる方式になっています。

GCPコンソールで申請を出す画面
GCPコンソールで申請を出す画面
OAuth同意画面(AndroidアプリでGoogle Fitの歩数データへのアクセスを求めている場合)
OAuth同意画面(AndroidアプリでGoogle Fitの歩数データへのアクセスを求めている場合)
未審査の場合に表示される警告画面。Googleによる審査が通ってなくても一応100人まで使用可能ですが、ユーザーの同意時に以下のような警告画面が表示されます。(赤点線で示したフローで操作すれば使用可能です)
未審査の場合に表示される警告画面

審査には、YouTube動画と、ドメイン、プライバシーポリシーのページが必須

GCPコンソールのセンシティブデータアクセス用OAuth同意画面の作成には、少なくとも以下3点が求められます。

センシティブデータアクセス用OAuth同意画面の作成に必要な代表的項目
  • YouTube動画のURL(データをどのように使用するかを示すもの。本件用に作成・公開が必要。)
  • プライバシーポリシーを示したWebページ
  • 認証済みドメイン(Webアプリ連携などを行う場合。example.comといったもので所有権を証明できるもの。)

YouTube動画

尚、以下の動画は、私が実際に認証申請して通過したときにGoogleに提出したYouTube動画です(本件のために作成しました)。これから審査に出す方はぜひご参考ください。

ちなみに動画作成にあたっては、Android11以上で標準で使えるスクリーン録画と、Windowsに標準で付属するビデオエディターを使用しています。

プライバシーポリシーのWebページ

ご紹介のケースで示したチーム・ウォークのプライバシーポリシーをご参考ください。英語表記をメインで表示し、日本語にも適宜切り替わるよう設計しています(切り替え機能はVue.jsを利用していますが、この機能は必須ではないので英日文を上下に併記しておけばよいでしょう)。

Webサーバーをお持ちでない場合はさくらのレンタルサーバ ライト(PR)(月額数百円から利用可)やペライチを利用するなど、適宜用意する必要があります。

審査を受けるためには、まずはアプリ公開(未公開アプリは基本的に審査対象外)

審査を受けるには、基本的に何らかの方法でアプリを公開しておく必要があります。

機能の一部が実現していないのに公開が必須、というのは矛盾を感じますが、それでも規則なので仕方ありません。

私が取り組んだ「チーム・ウォーク」はログイン後に機能を利用するので先に公開しても問題ありませんでした。そうではない場合は例えば日本以外のどこか他の地域限定で公開し、審査を受けてから日本国内の公開に進む、といったプロセスなど検討が必要でしょう。

審査が通るまで、かなり時間がかかる

この認証作業についてGoogle側も「4〜5週間はかかる」と認める通り、とにかく時間がかかります。

一回ごとのレスポンスは数時間〜数日とクイックなのですが、毎回「動画を直せ」とか「アプリ内の表示を直せ」といった指示がくるので、修正作業も骨が折れます。これが4回も5回もやりとりが行われるので、手間も時間も嵩みます。

期間には余裕を持って取り組むようにしましょう。事業プロジェクトとして進めるのであれば、この認証作業に最低でも2ヶ月は余裕を持っておきたいところです。あるいは何らかの形で先行公開して、API認証を同時進行するのが良いでしょう。

OAuth同意画面の作成手順

GCPプラットフォーム内にてOAuth同意画面を作成し、Androidアプリと紐づけします。

Fitness APIを有効化

まずはAPIとサービス→ライブラリでFitness APIを検索し、有効化を行います。

APIの検索
APIの検索
有効化をクリック
有効化をクリック

OAuth同意画面の作成

APIとサービス→OAuth同意画面に移動。

APIに関する必要情報の入力画面が表示されます。必要となるYouTube動画のURL指定などもここで行います。

gcp-menu
「外部」を選択して進む
「外部」を選択して進む

OAuth同意画面のスコープ選択

スコープは、何のデータへのアクセスへ同意を求めるかの範囲指定です。

ここではFitnessの歩数データ取得を目指しますので、fitness.activity.readを選択します(日本語の説明に若干違和感がありますが、スコープ名に着目して選択するのがよいでしょう)。

尚、ここでFitness関連のスコープが表示されない場合、Fitness APIの有効化が出来ていない可能性が考えられます。上のステップに戻ってAPI有効化を確認しましょう。

必要なスコープを選択。説明よりも名称に注目すると吉。
必要なスコープを選択

認証情報にAndroidアプリ情報を紐づけ

Androidアプリとの紐づけは、認証情報の画面から行います。これにより、作成したOauth同意画面をAndroidアプリ内で表示することが出来ます。

Androidアプリプロジェクト内のAndroidManifest.xmlにあるパッケージ名、アプリ作成時に作成した署名を入力します。

尚、署名情報は、最新の署名方式を利用していれば、Google Play Consoleのアプリ画面→アプリの完全性→アプリの署名の画面に表示されています。

認証情報→CREATE CREDENTIALSに移動
認証情報→CREATE CREDENTIALSに移動
AndroidManifest.xmlと、アプリの署名情報からそれぞれ転記します。
AndroidManifest.xmlと、アプリの署名情報からそれぞれ転記します
【社内PR】チーム・ウォーク

開発フェーズにおいてアプリをテストする時の注意点

上記の通り、OAuth同意画面(並びにスコープへのアクセス許可)とAndroidアプリは署名情報によって紐づいています。

ローカルでデバッグするときはデフォルトでは署名されていない情報で起動するので、当然OAuth同意画面も起動しません。開発フェーズにおける当該データアクセス部分の検証は、Google Play Consoleの内部テストを利用するなどの工夫が必要です。

実際に審査を受けてみた実録を紹介

ここからは、私自身が個人制作アプリ「チーム・ウォーク」で認証を受けるための流れを紹介します。

初回にGCPコンソールで認証申請を提出した後から始まります。

プロセスの中で分かった、OAuth認証審査のコツまとめ

先に今回のプロセスで得られた知見を共有します。

  • 審査チームとのメールでのコミュニケーション、動画内の文書、申請入力などはすべて英語で行う(日本語で作成したりすると「英語で示せ」と指示されます。)
  • 詳細な拒絶理由は教えてくれない(質問しても同様)。質問文を書く暇があったら、文書や動画を修正して再申請を出した方が建設的。
  • 審査には短くとも数週間は要する。正式リリーススケジュールがある場合、必ず逆算して計画を立てる。
  • GoogleアカウントにアクセスするエントリポイントにGoogleサインインボタン画像を使用する。
  • 動画内では、OAuth認証を実際に行う様子を詳細ボタン内も含めてきちんと表示する。

1度目の提出→[Action Needed] Update Demo Video

審査チームから次の通り初回連絡が来ました。

デモビデオにアクセスできなかったよ

とのこと。確かにアクセス可能なURLを提供したのになぜ・・・と思いつつ。メールに直接返信せよとのことなので、URLを貼って返信しました。

尚、この初回返答は審査提出の翌日だったと記憶しています。基本的にこのやり取りにおいて、審査側の応答自体は全体的に非常にクイックです。

2度目の提出→Action Needed

Googleログインボタンは、Googleのブランドガイドラインに準拠せよ

とのこと。確かに下の画像の通り「Googleにログイン」と書いていますが実際のところこのアプリが持つのはオリジナルのログイン機構です。

よって、これは私の落ち度でした。動画の説明を「ログイン」から「アクセル許諾するアカウントを選択」と修正して再アップロードしました。

合わせて、メールに「動画の説明文言が適切でなく修正した」と、新しい動画のURLを添えて返信しました。(GCPコンソールのYouTube動画のリンクフォームも更新)

審査チームからの返信メールに添付されていた画像
審査チームからの返信メールに添付されていた画像

3度目の提出→Action Needed

「Thanks for your patience while we reviewed your project.」(意訳:お付き合いいただきありがとう)とメール冒頭につけてくれるので、形式的ながら優しさを感じさせます。

GoogleFitのブランドガイドラインに準拠する必要があります。

とのこと。

審査チームからの返信メールに添付されていた画像
審査チームからの返信メールに添付されていた画像

以下のリンクをご案内いただきました。

Google Fit Branding in Your App(Google Fitドキュメント)

こちらのリンク先によると、

you may surface Google Fit branding to your users.

とのことなのでブランディングを示すことは必須ではないように読めます。

しかしながら、改めて下の方までよく読むと、「オンボーディング、アプリの起動時等でユーザーに説明する」といった文言があるので、ある程度の表示は必要なのだろうと考えました。

尚、この指示にしたがってGoogle Fitのアイコンを使用する場合、上記リンク先に「Partner Marketing Hubで提供されるGoogle Fitアイコンを使用せよ」とあります。どこかで適当に拾った画像は使わないようにしましょう。

Partner Marketing Hubは、ブランドイメージの使用目的を問われ使用審査をするとの表示が出ますが、私の場合はメールアドレス認証後すぐに使用可能となりました。

4度目の提出→Action Needed

「Google Fitボタンは、GoogleFitのブランドガイドラインに準拠していません。」とのこと。3度目と同じですね。

Google Fitボタンの設置ルールについての規約が発見できなかったのでとりあえずボタン上にアイコンを設置したのですが不可でした。

他のアプリをいくつかダウンロードして研究したところ、どうもGoogleサインインボタンを使用するのがよいようなので、模倣して変更してみます。

参考:ログインにおけるブランドの取り扱いガイドライン (外部リンク)

審査チームからの返信メールに添付されていた画像
審査チームからの返信メールに添付されていた画像

5度目の提出→Request Granted(ついに通過!)

これでようやく通過しました。初回提出が6/18で通過が7/5なので、3週間くらいはかかっています。

個人開発だからいいものの、プロジェクトで動いているアプリならこのリードタイムを織り込んでいないと大変なことになりますので注意しましょう。

ここまでの話がご参考になれば幸いです。

最後の変更箇所。ユーザーに認証画面を提示するエントリーポイントにGoogleログインボタンを設置しました。また、アクセスを求める理由をボタンの下に表示しています。
最後の変更箇所

リンクまとめ

チーム・ウォーク公式(筆者が実際に申請し、この記事作成の元となったスマホアプリ)

チーム・ウォーク申請時に作成したYouTube動画(審査通過時のもの)

チーム・ウォークのプライバシーポリシー

Google ログインにおけるブランドの取り扱いガイドライン (サインインボタンのダウンロードと使用ガイドライン)

さくらのレンタルサーバ ライト(プライバシーポリシーページ作成用)

ペライチ(プライバシーポリシーページ作成用)

Google Cloud Platform(OAuth同意画面作成場所)

記事筆者へのお問い合わせ、仕事のご依頼

当社では、IT活用をはじめ、業務効率化やM&A、管理会計など幅広い分野でコンサルティング事業・IT開発事業を行っております。

この記事をご覧になり、もし相談してみたい点などがあれば、ぜひ問い合わせフォームまでご連絡ください。

皆様のご投稿をお待ちしております。

記事筆者へ問い合わせする

※ご相談は無料でお受けいたします。

この記事へのコメント

ニックネーム(任意)

返信通知先Emailアドレス(任意)

本文


* 感想やご意見等、お気軽にコメントください。但し、公序良俗に反するコメントはお控えください。
* 管理者が承認したコメントはこの箇所に公開させていただく可能性がございます。
* 返信通知先Emailアドレスは、筆者のみに通知され、公開されることはありません。返信通知先Emailを入力された場合は、コメントへの返信をこちらに掲載した際に通知させていただきます。その他の目的には使用いたしません。
* スパム対策のため、コメントは日本語のみ受け付けております。

堺財経電算合同会社 小規模IT構築サービス