Google AnalyticsのAPIを利用するために審査を受けた話

# 要約

Google AnalyticsのAPIを使って、そのサイトの人気ページランキングを表示するウィジェットサービス [Ranklet](https://ranklet.com/) を提供していますが、

Ranklet
https://ranklet.com/

OAuth経由でGoogle AnalyticsのAPIを利用するアプリケーションでは審査が必要になりました。無事に通過したので経緯と、受けた指摘事項を紹介します。

* 審査をクリアしていないアプリはOAuth認証画面で**未認証アプリ**の警告が表示され、ユーザ数にも制限がかかるらしい。
* あくまでアプリケーションから**不特定多数のGoogle Analyticsデータにアクセスする場合の問題**。サービスアカウントでのAPI利用や内部アカウントでの関係なく、「警告出るけど無視してね」と言える範囲なら緊急ではないと思われる。
* 審査ではGoogleサインインのリンクについてだけ、ガイドラインに沿うよう指摘を受けた。
* 審査は3〜5日、と書いてあるが弊社のケースでは当日にレスポンスがあった。

iOSアプリに比べたら緩いので気軽にチャレンジしましょう！

# 経緯

## メールでの告知

8月27日にGoogleからこんなメールが来ました。**「10月21日からセンシティブなスコープの認可を求めるアプリでは、OAuth同意画面で警告を出すよ」**とのこと。

> We’re writing to let you know that as part of ongoing and proactive security measures to protect users from deceptive apps, we now require apps which access user data via sensitive API scopes to be verified to ensure compliance with the Google API User Data Policy. We are proactively reaching out to you to help ensure the least disruption to your app(s).
>
> Although you may have recently submitted your app for verification, you must also submit for the sensitive scopes listed below which have not previously been verified. Please submit your app(s) for sensitive scope verification by October 21, 2019.
>
> If you do not have your apps’ sensitive OAuth scopes verified, your users will see the “Unverified App” screen, which may cause a noticeable drop in user consents, beginning October 28, 2019.

## 申請

OAuthにはRuby Gemの`OmniAuth`を使っており、その引数としてGoogle Analyticsの読み取り専用認可`https://www.googleapis.com/auth/analytics.readonly`を指定していましたが、同意画面の設定項目において明示しました。

※ 下のスクリーンショットでは審査を経てグリーンのアイコンになっていますが、申請したときは警告マークのアイコンでした。

当初、OAuth同意画面の設定で**プライバシーポリシー**ページのURLは任意だったので空欄でしたが、久々に見たら必須になっていました。

`確認のため送信`というボタンが増えており、これが申請ボタンでした。

<img width="475" alt="同意画面_-_Ranklet_-_Google_Cloud_Platform.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35178/4e2ea99b-6f22-c9c0-c1bc-11f5fb9ca20a.png">


## 指摘

翌日の早朝にリジェクトの連絡がメールでありました。**「Googleサインインのリンクはガイドラインに沿ってね」**という内容です。

> Please update the Google sign-in button on your project’s homepage URL so that it complies with the Google sign-in branding guidelines. Please see attached screenshots for reference.

Googleサインインボタンのガイドライン
https://developers.google.com/identity/branding-guidelines#top_of_page

親切にスクリーンショットも添付してくれました。Rankletは日本語専用のサイトなんですが、**海外の方が翻訳を使ってチェック**しているようです。

![Google Sign-In Branding.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35178/74ec6ad9-c091-d4a0-81ec-0cf7d4023a58.png)

画面真ん中のピンクのボタンも実はGoogleサインインに進むのですが、そこは指摘がありませんでした。`サインイン`や`ログイン`といったキーワードを見ているようです。

## 再審査

サインインをテキストリンクからGoogleが提供するボタン素材に変更し、他のサインインボタンも念のため変更しました。

修正したらクラウドコンソールから再申請…と思いきや、**「メールに返信してね」**と書いてます。

> To proceed with the verification process, please modify your app to ensure that it complies with our requirements. Please reply to this email​ to confirm your compliance. 

なので、メールへの返信で再レビューを依頼しました。

## 審査通過

また翌日の早朝に返信があり、無事に審査を通過しました。

> Your project: ranklet has been successfully verified. You can check the latest status of your review request on the OAuth Consent Screen page in Google Cloud Console for this project.

まとめは冒頭の要約に記します。

以前、iOSアプリの申請を綴った記事に助けられたので自分も経緯を残しておきました。