Unity アプリケーションから Google Drive にアクセスする記事は多いですが、そのほとんどは「開発者がテスト環境で使う」ことに焦点が当てられています。
実際にユーザーに提供するアプリの場合、非常に手間がかかりました…。その概要を共有します。
英語でのメールのやりとりから逃げない
まずはこれが必要です。
本番環境にするためには、The Google Cloud Trust & Safety Team とのやりとりを英文メールでこなす必要があります。慣れていれば 1 ~ 2 回で済みそうですが、慣れていないともっと必要になります。
DeepL などで和訳すれば相手の伝えている事はほぼ理解できますが、問題はこちらの返答です。
しっかりと主語のある、なるべく簡単な文章にしましょう。
いつも日本語で書くような、なんとなく主語のないフワッとした言い回しは上手く英訳されない事があります。
例えばこういう文章を英文にする場合、私はこのくらい文章をスリムにします。
主語のない曖昧な言い回しは、正しく英訳されない可能性があります。
知らない英単語が頻発したり、自分が読みづらいと感じる英文であれば、なるべく平易になるよう「日本語を」調整します。(基本は削っていく作業)
スコープの理解
テスト環境であれば「自分しか使わない」ので、スコープ(権限)設定は適当でも構いません。
が、公開するとなるとそうはいきません。
Google Drive へのアクセスに関する、代表的なスコープをあげておきます。
drive
https://www.googleapis.com/auth/drive
Google ドライブのすべてのファイルの表示、編集、作成、削除
このスコープ、実は「機密性の高いスコープ」で、Google Drive 上の全てのフォルダやファイルをアプリが操作する必要がなければ許可されません。
許されるといっても、その道のりは平坦ではなく、
- その必要な理由を出来るだけ詳しく説明する(全部英語)
- 必要な場面を Youtube 動画で示す、なんなら説明も入れる(もちろん全部英語)
これらを提示し、セーフティチームを納得させる必要があります。
気楽に Google Drive のフォト整理アプリ作って公開しようと思った場合、作るよりも公開の方が大変、なんて事になりかねないので注意しましょう。
drive.file
https://www.googleapis.com/auth/drive.file
このアプリで使用する Google ドライブ上の特定のファイルのみの参照、編集、作成、削除
アプリでドライブに保存、それをユーザーが加工(スプレッドシートとか)するのであれば、drive.file が非常に便利なスコープです。
こちらは「非機密のスコープ」なので、審査も通りやすいです。
アプリで Create したファイルには「アプリ作成タグ」が(AppProperties あたりに?)マーキングされ、 Google Drive で作成されたデータと区別されているようです。
ためしに「Google Chrome にドロップコピー」「mipass というアプリで Create」した同じ名前のファイルを2つ作成します。
2つの見た目に違いはありませんが、詳細を確認すると違いが分かります。
左がドロップコピーしたファイル、右がアプリで Create したファイルです。
アプリは右のファイルしかアクセスできませんので、万が一ユーザーが ファイルをコピー > 改ざんした後同名のファイルを読み込ませ
ようとしても、読み込ませることはできません。
drive.appdata
https://www.googleapis.com/auth/drive.appdata
Google ドライブでのアプリ独自の設定データの参照、作成、削除
「Google Drive でファイルが見えない」という一番セキュアなスコープです。
「設定 > アプリの管理」で登録された情報の容量を見たり、削除することができます。
ユーザーにファイルを触らせる必要がない場合、このスコープを選んでおくのが一番安心です。
が…こういう情報を Google Drive に保存させることはあまりなさそうなので、一番使われない属性かもしれません。
利用規約、プライバシーポリシーを含めたサイトを(英語で)作成する
日本でのみ運用するアプリ、ということをセーフティチームが納得すればその限りではないかもしれませんが、基本的には「英語でアプリサイトを作り、利用規約やプライバシーポリシーも公開する」必要があります。
プライバシーポリシーはストアにアプリを公開する場合にも求められますが、それより一段上のサイトを求められると思ってください。「どのファイルを、どう同期するのか」という説明を(サイトに)求められる事もあります。
正直これはかなり骨が折れる作業で、(個人であれば)ここで公開を諦める人も多いと思います。
セーフティチームもスコープが drive.file や drive.appdata の場合「アイコンを表示する必要のないアプリの場合、検証プロセスをスキップすることができ、何もする必要はありません。」と最初に伝えてきます。この場合、アプリと同じように利用規約とプライバシーポリシーだけ用意してあればよさそうです。
そして、合格
途中から「ブログのネタにするために頑張る」と意地になって続けてましたが、初めての事をするというのは色々と大変でした…。とにかく、サイト作成がきついですね。
お陰で Google API についても理解が深まりましたし、結果オーライとしておきます。
ゲームのデータ共有なら、正直 Firebase とかのが全然楽。