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

# 目的
- Androidアプリからの Google Drive API Ver.3 (旧REST API) 使用方法をまとめる。
- ここでは下図の手順(b)、デバッグ時にアプリからAPIアクセスする際の認証情報を設定する手順について説明する。
![Key_Certificate_Debug_b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2408239/6fde30d4-aba2-1b51-f259-233f73372269.png)

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

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

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

(1) Google APIコンソールへログイン。

  -  [Google Cloud API Console][link1] からGoogle APIコンソールへログインする。
  -  [AndroidアプリからのGoogle Drive API使用方法まとめ - (2) アプリ情報登録編][link2]に示す最後の手順から継続している場合は既にログイン済・プロジェクト選択済なので、下記(3)の手順から始める。

(2) Google Drive APIを有効化したプロジェクトの選択。

  - アプリ情報登録時に関連付けたアプリ（プロジェクト）を選択する。
![GcloudApiLibK.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2408239/30b3e161-c3b9-e8e3-c274-ab40bc14870e.png)

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

  - 画面左側から"認証情報"を選択する。
![GcloudApiLibS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2408239/8f05efcb-3052-4b9f-fe80-347d5c9aa309.png)
  - "CREATE CREDENTIALS"から"OAuth クライアント ID"を選択する。
![GcloudApiLibT.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2408239/600025b7-e765-7a07-57a6-100a29672bd6.png)

  - 認証を行うOAuthサーバーで個々のアプリを識別するためのクライアントIDを設定する。
  - アプリの種類により認証シーケンスが異なるため、まずは "アプリの種類" で "Android"を指定する。
![GcloudApiLib9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2408239/fcbd66fa-2025-df5d-3fb5-77c2f0b88c5f.png)

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

(4) Androidアプリ固有の設定。

  - "アプリの種類" でAndroidを指定すると固有の項目が表示される。最初に下図(a)部で "名前" を指定する。これは API コンソールでクライアントを識別するためだけに使われ、ユーザーが見るものではないので何でも良い。ただし、開発中に必要なデバッグ用とGoogle Play登録後に設定するリリース版は別のクライアントIDとなるため、両者を区別できる名前が良いかもしれない。
![GcloudApiLibB.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2408239/b5470031-ab20-144c-598f-cbc46bb7e181.png)
  - 次に(b)部でパッケージ名を指定する。AndroidManifest.xmlで指定した名前を入力する。
  - (c)部でSHA-1 証明書のフィンガープリントを指定する。これはOAuthサーバーがアプリを認証するためのもので、この時点ではデバッグ用アプリを動作させるために必要となる。（フィンガープリントを指定しないとGoogleDriveへのアクセス処理がデバッグできない。）
  - デバッグ用のSHA-1 証明書のフィンガープリントは、Windowsのコマンドプロンプトから以下のコマンドを入力することで取得できる。（ユーザーのフォルダがC:\Users\hogeの場合）
   
          C:\Users\hoge>keytool -keystore C:\Users\hoge/.android/debug.keystore -list -v
          キーストアのパスワードを入力してください:

    パスワードとして "android" を入力すると、以下が表示される

          キーストアのタイプ: JKS
          キーストア・プロバイダ: SUN

          キーストアには1エントリが含まれます

          別名: androiddebugkey
          :
          証明書のフィンガプリント:
                   SHA1: xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx
          :

 - 上記コマンドのオプションは環境のバージョンにより異なる場合がある。OAuthクライアントID 画面(d) 部のアイコンをコピーしてコマンドプロンプトへ張り付けた方が間違いが無い。（この場合、"path-to-debug-or-production-keystore" はユーザーフォルダ以下へ変更する。"C:\Users\hoge/.android/debug.keystore"等。）
 - パスワード入力して表示された "証明書のフィンガプリント：" の後ろにある xx:xx:xx...をコピーして (c)部へ張り付けた後、(e) 部の "作成" をクリックする。
 - 最後に "OAuth クライアントを作成しました" の画面が表示されるので、"OK" をクリックする。開発したAndroidアプリを動作させるだけなら認証情報は使わないので、特にダウンロードする必要は無い。
![GcloudApiLibC.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2408239/4ac32bf8-d90e-0a11-9793-7d30948bda5f.png)
- 証明書は開発環境をインストールする毎に変更されるため、フィンガープリントはAndroid Studioを再インストールする度に毎回設定する必要がある。


# 参考

- [AndroidアプリからのGoogle Drive API使用方法まとめ - (1) 全体編][link0]
- [Google Cloud API Console][link1]
- [AndroidアプリからのGoogle Drive API使用方法まとめ - (3) アプリ情報登録編][link2]
- [OAuth 2.0 を使用した Google API へのアクセス - シナリオ][link3]



# 変更履歴
- 2022/8/28 初版
- 2022/12/3 誤記修正
- 2022/12/10 開発環境再インストール時の証明書フィンガープリント設定に関する記述を追加


[link0]:https://qiita.com/SolitaryFiatist/items/fa830b4828375873bcc1
[link1]:https://console.cloud.google.com/projectselector2/apis
[link2]:https://qiita.com/SolitaryFiatist/items/65a63220a51acad7d302
[link3]:https://developers.google.com/identity/protocols/oauth2#scenarios