ネイティブアプリでGoogle APIを使うとき、GoogleからOAuth検証の承認を得る必要があるらしいけど、どうやったらスムーズに承認されるの?注意点などが知りたい。
という方向けの記事です。
実際に自分がやってみて、涙が出るほど大変だったので、少しでも他の方の苦労が減らせれば、という思いで経験を共有します。
事前にかなり情報収集をし、しっかり準備して申請したつもりでしたが、大苦戦しました。。
苦労した一番の理由は、ネイティブアプリだったから、と考えています(ネット上の情報にはWebアプリの例が多く、また、承認フローもWebアプリが前提になっている印象です)。
本記事では、Googleから受けた具体的な指摘内容と、それにどう対処したか、についてご紹介します。
OAuth検証の具体的な申請手順については、下記記事で整理したので、よろしければこちらもご参考にしてください(申請上の注意点など、一部内容が重複する部分はご了承ください)。
Webアプリとスマホのネイティブアプリとでは事情が異なる部分があるので、ネイティブアプリゆえの注意点なども共有したいと思います。
そのため、既に申請を始めていて、審査格闘中の方、また、ネイティブアプリでGoogle APIを利用しようとされている方には、ご参考になるのではないかと思います。
概略(受けた指摘と、それに対する対処法)は、以下のとおりです。
- 開発中または一般公開前のサービスは審査対象外である。
- → 申請時に、ネイティブアプリのため、本番リリース「前」にOAuth検証の認証を受けざるを得ないことをしっかり主張する。
- 所有権を確認できないドメインがある。
- → 「承認済ドメイン」に使わないドメインが登録されていたら削除する(Firebase経由でプロジェクトを作った場合に自動設定される「xxxx.firebaseapp.com」など)。
- OAuth同意画面のアイコンと、アプリのホームページのアイコンが一致しない。
- → Google Cloud Platform(GCP)に登録するアプリのアイコン画像と、アプリを紹介するホームページのファビコン画像を一致させる。
- OAuth同意画面の表示プロセスを撮影したYouTube動画(デモビデオ)では、要求するスコープごとに、ユーザーデータがどう使用されるかを示せ。
- → デモビデオでは、同意画面上の各スコープの「Learn more」をクリックし、詳細画面のポップアップ表示をしっかり見せる。
- デモビデオにおけるOAuth同意画面は、英語で表示せよ。
- → 同意画面の言語設定で「English(United States)」を選択する様子をしっかり見せる(初めからOSを英語設定にしていたとしても)。
- デモビデオにおけるOAuth同意画面のURLに、Client IDが表示されていることを示せ。
- → ネイティブアプリのため、同意画面上にClient IDを示す必要はない(Googleが掲示する例外規定が適用されるため)点を主張する。
- アプリのホームページからプライバシーポリシーにアクセスできるようにせよ。
- → アプリ紹介ページに、プライバシーポリシーへのリンクを設置する。
- プライバシーポリシーに、Googleのユーザーデータをどう使用するのか明記せよ。
- → プライバシーポリシーに、Google APIへのアクセスによるユーザーデータの使用目的を明記する。
40代からプログラミング(Flutter)を始めて、GooglePlayとAppStoreにアプリを公開しているhalzo appdevです。
作成したアプリはこちら↓ 全てFlutterで開発したアプリです。
- なぜOAuth検証の承認が必要だったか
- 審査に出す前に調べて準備していたこと
- Googleから受けた指摘と対処したこと(時系列)
- まとめ(申請時に何が足りなかったか?)
- 補足
なぜOAuth検証の承認が必要だったか
先日リリースしたアプリ「かんたんプリント管理」では、Google APIを使い、Google DriveやGoogle Calendarにアクセスする機能が実装されています。
Google APIでユーザーデータにアクセスする際は、ユーザーから同意を得るポップアップ(以下、「同意画面」)を表示する必要があります。
さらに、このアプリでは、Google CalendarのAPIが、「機密性の高いスコープ」に該当していたため、同意画面の表示に加え、Googleから問題ないアプリかどうかを検証してもらい、承認(OAuth(※)検証の承認)を得る必要がありました。(※)ユーザーデータにアクセスする際の認証方式
一応、承認無しでも使用できますが、アプリ内でGoogle DriveやGoogle Calendarにアクセスする際、ユーザーに以下のような画面が表示されます。
左下の「詳細」をクリックして進めば利用できますが、サービスとしてユーザーに与える印象は悪いです。また、そもそも非承認の状態だと、利用できるユーザー数も100人までとされています。
そのため、OAuth検証の承認を得ることは不可欠となります。
この承認プロセスが結構大変だ、という情報は目にしていたので、自分なりに準備して望んだのですが、結果、何度も却下されてしまい、Googleと6回に渡りメールのやりとりをすることになりました。
審査に出す前に調べて準備していたこと
自分が審査前にネットの情報などを調べて、あらかじめ準備していた事項を以下に挙げておきます。
✓アプリ上で、Googleサインインの画面から同意画面を表示して、ユーザー同意を得るプロセスを動画撮影し、YouTubeにアップした。
✓動画では、具体的に使用するスコープが分かる画面を表示するようにした。
※過去に一度同意していると、上記画面を表示できないので、Googleアカウントのページからいったん承認を削除しておく必要があります。
✓あらかじめエミュレーターのOS言語設定を「English(United States)」にしておき、動画中に表示する同意画面が全て英語で表記されるようにした。
✓動画の中にはなるべく英語での字幕説明を入れるようにした。
✓アプリの説明ページ、プライバシーポリシーページ、利用規約ページを用意し、GCPの同意画面設定のページに登録した。
参考にさせていただいたサイトを以下にご紹介します。
また、GoogleによるOAuth検証に関する公式ガイドラインは、こちらです。
これだけ準備をしたのですが、何度も却下されてしまいました。
ご参考に、却下されたOAuth同意画面のYouTube動画(デモビデオ)を晒します(字幕をONにすれば、拙い英語字幕も見れます。。)。
Googleから受けた指摘と対処したこと(時系列)
申請後にGoogleから送られてきた指摘事項(リジェクトメールの内容)と、それに対してどう対処したかを時系列で記載します。
1回目の指摘: ドメインの所有権を確認せよ
1回目のリジェクトメール抜粋です。
Domain Verification
Please verify the ownership of the following domain(s):
####.firebaseapp.com, halzoblog.com
Go to the Search Console to complete the domain verification process. The account you use must be either a Project Owner or a Project Editor on #### (id: ####).
If the listed domain(s) are not required for the project, please remove them from the authorized domains section of your OAuth Consent Screen in Google Cloud Console.
- Google Cloud Platform(GCP)のOAuth同意画面の「承認済みドメイン」に登録したドメインの所有権が確認できなかった。
- 使用しないドメインなら、登録を削除せよ。
とのことです。
「halzoblog.com」は、プライバシーポリシー掲載用に登録した本ブログのドメインで、Google Search Consoleで所有権を確認済でした。
一方、「####.firebaseapp.com」は、Firebase側でプロジェクトを作ったことにより、自動的に設定されたもので、所有権の確認はしていませんでした。
このドメイン所有権の確認には、Firebase Hostingにウェブページを開設する必要があり、そこまで手間を掛けたくないので、登録を削除することにしました。
GCPのページで削除しようとすると、
このドメインは次のクライアント URI で使用されています: [ プロジェクト名]. 削除する前にクライアントの認証情報を更新する必要があります。
と言われるので、「ウェブ アプリケーション のクライアント ID」のページへ行き、「承認済みの JavaScript 生成元」と「承認済みのリダイレクト URI」から、「xxxx.firebaseapp.com」を削除しました。
アプリのウェブ版を作る場合は、リダイレクト先としてこのドメインが必要だったようです。
自分の場合は、ネイティブアプリのみリリース予定なので、削除して問題ありませんでした。
Googleには以下の内容を返信しました(実際は英訳して回答)。
このアプリは「####.firebaseapp.com」のドメインを使用しないので、Google Cloud のOAuth同意画面の承認済みドメインセクションから削除しました。
一方、「halzoblog.com」のドメインは、Google Search Console上でのドメイン所有権の確認はすでに完了しています。
本件は、それ以降、指摘を受けなかったので、この対応で問題なかったようです。
2回目の指摘: 開発中・非公開のプロジェクトは検証の対象にならない
次に来たリジェクトメールの抜粋です。
It looks like your project ###### (id: ######) is a development or staging app. Development/staging projects, or projects which are not yet live to the public, are not eligible for verification. Please respond to this email to let us know if your app is still in development.
この指摘は衝撃でした。
そもそも、承認を得る前にストアにリリースしてしまって良いの?と疑問でした。
※後で分かりましたが、OAuth検証の承認プロセスは、基本的にWebサービスを想定したものだと思われます。
また、先にストアにリリースすると、承認されるまでの期間、あの危険信号マークのポップアップが表示されるので、ユーザーに与える印象を考えると避けたいと思いました。
調べてみると、こちらのGoogleの公式説明ページでは、
アプリがGoogleAPIを使用してGoogleユーザーのデータにアクセスする場合、アプリを公開する前に確認プロセスを完了する必要がある場合があります。
と書かれており、リリース前に検証されるケースもあるようです。
そのため、Googleに以下の通り返信して、検証の続行を依頼しました。
- 私のアプリはネイティブアプリなので、Google PlayやApp Storeでリリースされる前に、OAuth検証の承認を得たいです。
- 承認なしにリリースすると、「このアプリはGoogleで確認されていません」という表示が出てしまい、ユーザーに悪い印象を与えてしまいます。何とかリリース前に検証してもらえないでしょうか。
- Googleの公式ページでも、「アプリを公開する前に確認プロセスを完了する必要がある場合がある」と書かれているので、可能なはずでは?
しかし、その後のリジェクトメールの中にも、「開発中・非公開のプロジェクトは検証の対象外です」という言葉があったので、1回主張したぐらいでは駄目だったようです。。
3回目の指摘: 提出されたホームページのボタンにアクセスできない、または壊れている
今度は、以下のようなメールが来ました。
We’ve noticed that the buttons on the submitted homepage are inaccessible and/or broken.
Please ensure that all links and/or buttons on your site are functional and your application is production-ready before re-submitting your application for OAuth verification.
Note: Development/staging projects and projects which are not yet live to the public, are not eligible for verification.
申請時に提出したホームページのボタンが機能しないので、申請前にリンクやボタンが正常に動作するか確かめよ、とのことです。
この指摘も困惑しました。
また、最後の一文に、2回目と同じ指摘が書かれています。
そもそも、この「ホームページのボタン」の意味が分かりませんでした。
「ホームページ」は、GCPの以下の部分に入力したURLを指していると思われます。
前述のとおり、この承認プロセスは、WebサービスがGoogle APIを使うケースを前提にしているようなので、恐らく上記の欄には、そのWebサービス自体のURLを登録するものと思われます。
しかし、自分の場合はネイティブアプリなので、サービスのURLは存在しません。そのため、こちらのようなアプリを紹介する簡単なページを本ブログサイト内に作り、そのURLを登録していました。
このアプリの紹介ページには、直接アプリを起動するボタンや機能はありません。
そこで、ネイティブアプリの場合にどうすればよいか、返信の中で下記のとおり質問しました。
- 私のアプリはWebアプリではなく、Android、iOSのネイティブアプリなので、まだ一般公開されていません。
- ネイティブアプリの場合、承認を得るにはどうすればよいか教えてください。
- 例えば、Google Playにアップロードした公開前の内部テスト版を提出すればよいでしょうか?(その場合、送り先のGmailアドレスを教えてください。)
- もしくは、Google Playで公開後に、Google Play上のURLを提出すればよいでしょうか?(この方法は、公開後に審査を受けることになり、ユーザーに与える印象が悪くなるので、できれば避けたいですが、この方法しか無いのであれば従います。)
自分の説明が下手だったためか、この質問に対して、Googleからの直接的な回答は得られませんでした。
ただ、、、その後も審査のやり取り自体は続いたので、なんとか「一般公開前だけど、審査はやる」と判断いただけたようです。
4回目の指摘: プライバシーポリシーをガイドラインに準拠させ、ブランドを一致させ、YouTubeデモビデオを修正せよ
今度は長いメールが来ました。
Privacy Policy Requirements
Under the Google API Service: User Data Policy, your privacy policy must follow these guidelines:
・The privacy policy is hosted by the domain of your website.
・The privacy policy is accessible from the app’s home page.
・The privacy policy is visible to users.
・The privacy policy is linked to the OAuth consent screen on the Google API Console
・The privacy policy and in-product privacy notifications clearly describe the way your application accesses, uses, stores, or shares Google user data.
・The way you use Google user data is limited to what you've described in your privacy policy.
・The privacy policy contains verified domains and accessible URL links.
Consistent Branding
Under the Google API Services User Data Policy, your project must accurately show its identity to users when it requests access to their data.
To fix any issues, please update the icon and other relevant content on the OAuth Consent Screen of the Google API Console. Make sure your project accurately shows its true identity to Google users.
App Demonstration Video
Every OAuth project that requests sensitive scopes must provide a YouTube video of their app that follows these requirements:
・Video is publicly accessible.
・OAuth Consent Screen is in English.
・OAuth Consent Screen shows the App Name.
・URL bar of the OAuth Consent Screen fully displays the Client ID in your project which contains the project_number (This is not required for native Android and iOS apps).
・Video shows the OAuth grant process that users will go through.
・Video shows how the data will be used by showing functionality for each sensitive and restricted scope you've requested.
・Video shows how data is accessed on each OAuth client.
Extra App Demonstration Video Tips
・If any of your OAuth clients are not ready for production, you should delete or remove them from this project. You can do this in the Google Cloud Console.
・If your app requires registration or has a local login:
・Please whitelist or authorize our test email account #######@gmail.com - this will let us test your app’s functionality.
・OR provide us with the username and password of a test account.
・You do not need to be personally visible in the demo or narrate the video. Demonstrating the process from the keyboard/screen view is fine.
・If you cannot fulfill the above requirements because users are currently seeing the "Sign in disabled" screen, make sure you provide us with an email address so that we can temporarily disable the warning screen, allowing you to demonstrate all of the above video requirements.
・If you cannot fulfill the above requirements because your app is an add-on that has not yet been published to the GSuite Marketplace, please reply to let us know.
大きく4つのセクションがあるので、分けて記載します。。。
プライバシーポリシーに関する指摘
基本的に対応済の認識でしたが、2点目の指摘については、確かにアプリの紹介ページからプライバシーポリシーへのリンクが無かったので、ページ内にリンクを追加する修正をしました。
また、5点目の指摘についても、プライバシーポリシーの中で、Google APIの利用目的を記載していなかったので、「Googleカレンダー、Googleドライブへのアクセスについて」という見出しを追加して、カレンダーへの登録やバックアップが目的であることを追記しました。
また、審査する人に分かりやすいよう、この項目だけは全て英訳を併記しておきました。
この5点目については、「clearly describe the way your application accesses, uses, stores, or shares Google user data」の部分が太字になっていたので、もしかするとこの対応だけで良かったのかもしれません。。
その他の事項は対応済の認識だったので、以下のように返信しました。
- プライバシーポリシーのURLのドメイン「halzoblog.com」は、Google Search Consoleで所有権を確認済です。
- アプリのページにプライバシーポリシーへのリンクを追加しました。
- ユーザーは、同意画面下部のリンクと、アプリ内にあるリンクからプライバシーポリシーページにアクセスできます。
- プライバシーポリシーに「Googleカレンダー、Googleドライブへのアクセスについて」というセクションを追加しました。英語訳もつけています。
これ以降、プライバシーポリシー関連は指摘を受けなかったので、これで大丈夫だったようです。
ブランディング・アイデンティティに関する指摘
同意画面には、アプリのアイデンティティを示す必要があるので、アイコンやその他のコンテンツをGoogle API Console(恐らくGCPの同意画面設定ページのこと)に再登録せよ、とのこと。
しかし、既にアイコンは登録済で、デモビデオでもアプリのアイコンを映しているので、この時点では何が問題なのか分かりませんでした(恐らく、5回目で受けた指摘と同一だと思われます)。
そのため、この時点では以下のように返信しました。
Google API ConsoleのOAuth同意画面設定ページには、アプリ名、サポートメールアドレス、アプリのロゴ、承認済みドメイン、ホームページリンク、プライバシーポリシーリンク、およびYouTubeデモリンクを既に登録済です。
ただ、これでは承認を得られませんでした。。
アプリのデモビデオに関する指摘
7つの基準を満たすYouTubeのデモビデオを作成せよ、ということですが、既に作成したビデオはいずれも満たしている認識でした。
2点目の「同意画面を英語にせよ」という点は、事前に調べて知っていたので、エミュレーターのOS言語設定をあらかじめ英語にし、英語表示させた状態で録画していました。
また、4点目にある「同意画面のURLバーにClient IDを表示する」という点は満たしていませんが、カッコ書きにもあるとおり、Android・iOSアプリの場合は不要とあるので、問題ないはずでした。
※ネイティブアプリの場合に不要となる理由は、下図のとおり、同意画面にURLバーが表示されないためだと思われます。
※なお、実装方法によっては、Webアプリの場合と同じように、アプリからブラウザを起動し、ブラウザ内に同意画面を表示させることもでき、この場合は、ブラウザのURLにClient IDを表示できます。しかし、アプリからブラウザを起動させるのは、ユーザービリティ的にも良くないので採用しませんでした。
以上を踏まえ、以下のように返信しました。
・私は、既に提出したとおり、次のURL「https://#####」に、アプリのYouTubeビデオをアップロードしており、これは一般にアクセス可能です。
・ビデオは英語で字幕を入れており、同意画面の言語も英語で表示されています。
・アプリ名は同意画面に表示されています。
・Android・iOSのネイティブアプリのため、Client IDの表示は不要なはずです。
・ビデオは、私が要求した機密性の高いスコープごとに、ユーザーのデータがどのように使用されるかを示しています。
ただ、以降も同じような指摘が来たので、何かが基準を満たしていないようでした。。
デモビデオに関するヒント
デモビデオ作成にあたってのヒントが書かれていましたが、ネイティブアプリのケースではあまり関係ない印象でした。
気になったのは、ログイン機能がある場合は、Google指定のメールアドレス「#######@gmail.com」(#######は念のため伏せましたが、実際は英数字でした)でログイン可能にするか、別途、ログイン可能なID・パスワードを共有せよ、という記述です。
本アプリのログイン機能は、Googleアカウントによりサインインする機能のみのため、特定のアカウントでログイン可能にしたり、ID・パスワードを勝手に発行したりする事ができません(新たに自分の名前でGoogleアカウントを取得し、そのID・パスワードを第三者に教えるのは、セキュリティ的にも避けたいです)。
そのため、本セクションに関しては、特に返信しませんでしたが、その後、同じ指摘は受けなかったので、スルーで良かったようです。
5回目の指摘: 同意画面とホームページのアイコンを一致させよ。デモビデオ内のウェブページを英語に翻訳せよ。
今度は以下のようなメールが来ました。
We’ve noticed that your project does not accurately represent its identity to Google users when it requests access to Google user data. This violates Google API Services: User Data Policy. Therefore, we are unable to approve your verification request at this time.
We detected the following issue(s):
・Icon URL on the consent screen does not match the icon on your homepage
To fix this any issues, please update the Icon URL and other relevant content on the OAuth Consent Screen of the Google API Console, making sure that your project accurately represents its true identity to Google users.
Update Icon URL
To update the icon URL linked to your OAuth Consent Screen, you may do so by taking the following steps:
1. Sign-in to Google Cloud Console
2. Select the project ID: ######
3. Go to Credentials on OAuth consent screen
4. Update the icon URL
5. Click Submit for Verification
Please click on the "Submit for verification" button to save the latest changes, which will allow us to proceed with your verification request
Demo Video
Would you please provide a YouTube link with the demo video that shows the process to log into your project request OAuth token--with the webpages translated into English? Using the Google Translate Extension may assist you in doing this.
- 前半のアイコンURLの件
- 後半のデモビデオ中のOAuth同意画面を英訳せよという件
いずれも、4回目の指摘にあった内容の再掲と思われます。
となると、、前回の指摘のうち、上記2点以外は許容いただけたようです。
前半についてですが、アイコンの「URL」という意味がよく分かりませんでした。
GCPの登録画面には、PC内のフォルダから、アイコンのファイルを直接アップロードすることしかできないためです。
恐らくアップロードすると、下図のようにGCPの画面内に表示されるので、その画像を右クリックして取得できるURLを指しているのだと思われます。
一方、「ホームページのアイコン(the icon on your homepage)」についても、具体的に何を指すのか不明だったので、ネットで調べてみると、以下の記事に、ホームページのファビコン(favicon)のことである、との情報がありました。
確かに、アプリの説明ページは本ブログのドメイン上にあるので、ファビコンとアプリのアイコンは違ってしまっています。。
まさかブログのファビコン(favicon)にまで話が及ぶとは思いませんでした。
とは言え、本当にファビコンを直せば解決するのか自信がなかったのと、後半で指摘された英語化については、何が問題なのか分からなかったので、返信で以下のように質問しました。
- ホームページのアイコンとは、ファビコン(favicon)のことですか?同意画面に表示されるアイコンと、ホームページのファビコンを一致させれば良いのですか?
- デモビデオ内では、既にOAuthトークンを求める同意画面を英語で表示していますが、何が問題なのでしょうか?デモビデオの修正すべき点を詳細に教えて下さい。
しかし、次項のとおり、今回も質問に対する直接的な回答は得られませんでした。
6回目の指摘: デモビデオを修正せよ、アイコンURLを更新せよ、言語設定を英語(米国)にせよ
次に来たメールは2通でした。
Demo Video Requirements
・Show how a user logs into your app and grants access to the requested scopes.
・Your app's OAuth Consent Screen must show your app's name, かんたんプリント管理.
・Enlarge the OAuth Consent Screen to show the URL including the Client ID (This is not required for native Android and iOS apps).
・Show how your app uses the requested scopes.
Please note, if your app uses multiple OAuth clients your demo video needs to show all of the requirements for each OAuth client.
Update Icon URL
To update the icon URL linked to your OAuth Consent Screen, you may do so by taking the following steps:
1. Sign-in to Google Cloud Console
2. Select the project ID: ######
3. Go to Credentials on OAuth consent screen
4. Update the icon URL
5. Click Submit for Verification
Please click on the "Submit for verification" button to save the latest changes, which will allow us to proceed with your verification request
Update Language Settings
Please update the "Language" setting to "English (United States)" when demonstrating the OAuth Sign-in process for the app: Sateraito Office Mail Re-sending function for Google Workspace
, so that we may verify the user data requested by your application. Please see the attached screenshot for further guidance.
再び、「同意画面にClient IDを含んだURLを表示せよ」という指摘が書かれています(Android、iOSアプリなら不要、とも書かれているのですが、、)。
アイコンURLの件については、アイコンの更新・申請方法は詳しく書かれているものの、ファビコンと一致させれば良いのかどうか、記載がありません。
さらに、「デモビデオの言語設定を英語にするように」との指摘が、改めてされています(サテライトオフィスメール云々のくだりはよく理解できませんでした。。)。
これ以上、質問しても同じことを繰り返しそうなので、ある程度アタリを付けて、修正することにしました。
アプリ説明ページのファビコンの修正
まず、アイコンURLの件については、本ブログ内の一部ページのファビコンを、アプリのアイコンと一致させるよう修正することにしました。
下層ページに異なるファビコンを設定するのにかなり苦戦しましたが、何とかできました。
なお、WordPressで一部ページのファビコンを変更する方法については、下記記事にまとめましたので、よろしければご参考下さい。
デモビデオの再撮影(1):スコープの詳細表示シーンを追加
修正すべき箇所が無いか模索していると、同意画面では、下図のように、使用する機能を更に詳細に表示できる事がわかりました。
もしかすると、4回目の指摘事項の
・Video shows how the data will be used by showing functionality for each sensitive and restricted scope you've requested.
は、この詳細ポップアップを見せていない事が原因かもしれないと思い、これを表示させるシーンを動画に追加しました。
デモビデオの再撮影(2): 同意画面上で言語を「English (United States)」に切り替える様子を追加
同意画面の英語表示は必須と分かっていたので、エミュレーターの言語設定をあらかじめ英語にした上で撮影していました。
ただ、言語設定は同意画面の中でも、左下のプルダウンから変更することができます。
度々「英語にせよ」と指摘されるということは、もしかすると、同意画面内で言語を変更する様子を見せていないため、「英語に切り替えをしていない」と判定されたのかもしれない、と考えました。
そこで、初めから英語表示されている状態で、さらに同意画面内のプルダウンから「English (United States)」に切替えるシーンを動画に追加しました。
デモビデオの再撮影(3): Google Driveの利用シーンを追加
機密性の高いスコープを使用しているのはGoogle Calendarのみなので、デモビデオの中では、Google Calendarの利用シーンしか撮影していませんでした。
ただ、念のためGoogle Driveを利用するシーン(データのバックアップ・インポート)も追加することにしました(これは恐らく不要だったように思いますが、、)。
以上3点を加えた再撮影後(修正後)のデモビデオは、以下のとおりです(字幕をONにすれば、拙い英語字幕も見れます。。)。
以上を実施の上、以下の内容を返信しました。
※ネイティブアプリゆえに、Client IDの表示は不要であることを念押ししておきました。
要件を満たすよう、デモビデオを修正したので、新しいYouTubeのリンクをお送りします。
同意画面は英語で表示されています。
なお、このアプリはネイティブのAndroid / iOSアプリであるため、同意画面にClient IDを含むURLを表示する必要はありません。
アプリのホームページのファビコンを変更し、Google Cloud Platformに登録されているアイコンのURLと一致させるようにしました。
7回目の連絡で晴れて承認!
長かったです。。ようやく承認いただけました。
Request Granted
Thanks for submitting an OAuth App verification request.
Your project ##### (id: #####) is now verified for the below sensitive scopes(s):
https://www.googleapis.com/auth/calendar,
https://www.googleapis.com/auth/drive.appdata,
https://www.googleapis.com/auth/drive.file
You can check the status of your request on the OAuth Consent Screen page in Google Cloud Console for this project.
・・・(以下略)・・・
まとめ(申請時に何が足りなかったか?)
今回の経験を踏まえ、あくまで推測にはなりますが、申請時に対応しておけば良かったと思う事項を、改めて列記しておきます。
- 申請時に、ネイティブアプリのため、本番リリース「前」にOAuth検証の認証を受けざるを得ないことをしっかり主張する。
- 「承認済ドメイン」に使わないドメインが登録されていたら削除する(Firebase経由でプロジェクトを作った場合に自動設定される「xxxx.firebaseapp.com」など)。
- GCPに登録するアプリのアイコン画像と、アプリを紹介するホームページのファビコン画像を一致させる。
- 同意画面の表示プロセスを撮影したYouTube動画(デモビデオ)では、各スコープの「Learn more」をクリックし、詳細画面のポップアップ表示をしっかり見せる。
- デモビデオの中では、同意画面の言語設定で「English(United States)」を選択する様子をしっかり見せる(初めからOSで英語設定にしていたとしても)。
- ネイティブアプリのため、デモビデオに映す同意画面上に、Client IDを示す必要はない(Googleが規定する例外規定が適用されるため)点をしっかり主張する。
- アプリ紹介ページには、プライバシーポリシーへのリンクを掲載する。
- プライバシーポリシーには、Google APIにアクセスしてユーザーデータを使用する目的を明記する。
OAuth検証の具体的な申請手順については、下記記事で整理していますので、よろしければこちらもご参考ください(申請上の注意点など、一部内容が重複する部分はご了承ください)。
補足
Googleからの返信は、基本1〜2日以内で届いたので、レスポンスが早い点はとても助かりました。
ただ、リジェクトメールの内容については、「いったい何が問題なのか?」が分かりにくかったです。。
質問の仕方が悪かったせいか、直接的な回答を得ることが難しく、問題点を自分で推測することになったので、苦労しました。
その後、Googleから今回のOAuth検証の対応満足度について、アンケートが送られてきました。
せっかくなので、今回の感想を踏まえ、アンケートに回答しましたが、こうしたフィードバックを集めようとする姿勢は、さすがGoogleさんだと感服しました。
以上、どなたかのお役に立てれば幸いです。
最後までお読みいただき、ありがとうございました。
個人アプリ開発で役立ったもの
おすすめの学習教材
\超初心者向けでオススメな元Udemyの講座/
\キャンペーン時を狙えば安価で網羅的な内容が学べる(日本語訳あり)/
\Gitの基礎について無料で学べる/
おすすめの学習書籍
\実用的。image_pickerに関してかなり助けられた/
\Dartの基礎文法を素早くインプットできる/
コメント