AndroidアプリからのGoogle Drive API使用方法まとめ - (5) アプリ登録後の認証情報設定編

# 目的
- Androidアプリからの Google Drive API Ver.3 (旧REST API) 使用方法をまとめる。
- ここでは下図の手順(d)、開発したアプリをGoogle Playへ登録後にAPIアクセスする際の認証情報を設定する手順について説明する。
![Key_Certificate_Release_d.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2408239/5396ae62-d2df-0d08-b145-12bd19fdde15.png)

<div align="center">
     図1
</div>

- 全体の記事は[こちら][link0]

# 環境
- OS：Windows10 Professional 21H2
- Android Studio 2021.2.1
- ブラウザ：Google Chrome 103.0.5060.66（64bit）

# 登録したアプリからAPIアクセス時の認証情報設定

(1) Google Playへアップロードしたアプリの署名鍵に対応する証明書フィンガープリントの取得
  - [AndroidアプリからのGoogle Drive API使用方法まとめ - (3) 認証情報設定編][link1]で、デバッグ用の認証情報を設定した。Google Play でのアプリ公開の際には、デバッグ時とは別のアプリ署名鍵でファイルへデジタル署名する必要があるため、デバッグ時とは異なる認証情報を登録する必要がある。

  - 2021/8より、Google Play でのアプリ公開では Android App Bundle形式（aab）が必須となった。aabでは、Google Play へアップロードするファイルはアップロード鍵によって署名され、アプリへの署名は Google により管理される鍵（上記 図1(e) の公開鍵証明書）によって行われる。
  
    参考：[アプリへの署名][link2]

  - 以降の説明では、図1(e) 公開鍵証明書のフィンガープリントを指定する手順を示す。

(2) Google Playへアプリを登録

  - 開発したアプリをGoogle Playへ登録する。ただし公開の手続きは行わず非公開の状態としておく。
  
    参考：[アプリを公開する][link3]

(3) 公開鍵証明書フィンガープリントの取得

  - [Google Play Developer Console][link5] にログインし、対象のアプリを選択する。

![GplayCnsl1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2408239/aa75f681-576b-f189-beb5-013a1bdb1bfb.png)


   - 画面左側、"アプリの完全性" を選択する。

![GplayCnsl2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2408239/b8ab56d2-6c75-6edf-3031-b175299a01e0.png)


   - "SHA1証明書のフィンガープリント" 欄右の下図赤枠のボタンを押し、クリップボードへコピーする。

![GplayCnsl3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2408239/e13dc839-b678-1384-7685-5a10df7c755a.png)


(4) OAuthクライアントIDの設定

  - ここ以降は、[AndroidアプリからのGoogle Drive API使用方法まとめ - (3) 認証情報設定編][link1]で、デバッグ用の認証情報を設定した手順とほぼ同じ操作を行う。設定するフィンガープリントの出どころが上記(3)の手順となる点がデバッグ時と異なる。
  
  - 画面左側から"認証情報"を選択する。

![GcloudApiLibS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2408239/0d29af09-22f4-2337-2fa2-d8c269d29a72.png)


  - "CREATE CREDENTIALS"から"OAuth クライアント ID"を選択する。

![GcloudApiLibU.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2408239/289547f7-3d7a-ce8a-7655-5ba51a44bff0.png)


  - 認証を行うOAuthサーバーで個々のアプリを識別するためのクライアントIDを設定する。
  - アプリの種類により認証シーケンスが異なるため、まずは "アプリの種類" で "Android"を指定する。

![GcloudApiLib9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2408239/c6024090-0451-065b-c4da-985a6075f6da.png)


   アプリの種類やシーケンスについては、[OAuth 2.0 を使用した Google API へのアクセス - シナリオ][link4] を参照。

(5) Androidアプリ固有の設定

  - "アプリの種類" でAndroidを指定すると固有の項目が表示される。最初に下図(a)部で "名前" を指定する。これは API コンソールでクライアントを識別するためだけに使われ、ユーザーが見るものではないので何でも良い。ただし、開発中に必要なデバッグ用とGoogle Play登録後に設定するリリース版は別のクライアントIDとなるため、両者を区別できる名前が良いかもしれない。
![GcloudApiLibB.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2408239/1d11fac8-f788-a7ac-291b-9486f06b262e.png)

  - 次に(b)部でパッケージ名を指定する。AndroidManifest.xmlで指定した名前を入力する。
  - (c)部でSHA-1 証明書のフィンガープリントを指定する。これはOAuthサーバーがアプリを認証するためのもので、この時点ではGoogle Playへ登録したアプリを動作させるために必要となる。
  - 上記(3)でコピーしたSHA-1 証明書のフィンガープリントを(c)部へ貼り付けた後、(e) 部の "作成" をクリックする。
  - 最後に "認証情報をダウンロード" の画面が表示されるので、"完了" をクリックする。開発したAndroidアプリを動作させるだけなら認証情報は使わないので、特にダウンロードする必要は無い。
![GcloudApiLibV.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2408239/aa7593ed-b10d-5367-ac9b-ca35fe11a3d8.png)

# 参考

- [AndroidアプリからのGoogle Drive API使用方法まとめ - (1) 全体編][link0]
- [AndroidアプリからのGoogle Drive API使用方法まとめ - (3) 認証情報設定編][link1]
- [アプリへの署名][link2]
- [アプリを公開する][link3]
- [Google Play Developer Console][link5]
- [OAuth 2.0 を使用した Google API へのアクセス - シナリオ][link4]



# 変更履歴
- 2022/8/28 初版


[link0]:https://qiita.com/SolitaryFiatist/items/fa830b4828375873bcc1
[link1]:https://qiita.com/SolitaryFiatist/items/c942e0e0cfb114bfb013
[link2]:https://developer.android.com/studio/publish/app-signing
[link3]:https://developer.android.com/studio/publish?hl=ja
[link4]:https://developers.google.com/identity/protocols/oauth2#scenarios
[link5]:https://play.google.com/console/u/0/developers