やりたいこと
Google の client library を使わずシンプル REST API で共有ドライブのメタデータをとってきたい
実装
さっそく結論からいくと、ここを叩けば OK
https://www.googleapis.com/drive/v3/files?driveId=xxx&includeItemsFromAllDrives=true&corpora=drive&supportsAllDrives=true&fields=nextPageToken, files(id,name,mimeType)
変更する点は
driveId=xxx
の xxx を、対象の共有ドライブの ID (URL のパスにあるやつ) を設定するのと、files(id,name,...)
に、必要なフィールドを適宜追加する
の2つ
ほかのクエリパラメータは、 driveId
を指定した場合、
includeItemsFromAllDrives=true
corpora=drive
suppportsAllDrives=true
をセットで指定してあげないと 403 エラーが返ってくる (「driveId 使うならは
権限
OAuth scope はメタデータをとってくるだけなら
https://www.googleapis.com/auth/drive.metadata.readonly
だけで OK。逆に、 https://www.googleapis.com/auth/drive.files
だとメタデータはとれないし、403 とかではなく空のレスポンスが返ってくる (わかりにくい)。
認証まわりの話
試した限り API key だと共有ドライブのデータがとってこれなかったので、 OAuth 2.0 を使うことにした。
手順:
- (なければ) OAuth consent screen を作る
- OAuth Client をつくる
- OAuth 2.0 Playground などで refresh token と access token を取得
- リクエストの Authorization ヘッダーに
Bearer <access_token>
を設定する
開発 tips
Drive API まわりは自分には鬼ほどわかりにくくて、以下参考にしたリソース。
"Retrieve a list of thumbnails" というタイトルだけど、メタデータをとってくるサンプルコードになっている
- OAuth 2.0 のリクエストをどうやるかわかる
- こんな感じ↓で request/response が生で見れるので、どの URL を叩いたらいいか、とかもわかる
- 自分の client ID/client secret を使うこともできる
- 今回はアプリケーションじゃなくて no-code tool 用のもろもろを発行したかったので助かった
- OAuth Client の Authorized redirect URI を
https://developers.google.com/oauthplayground
に設定する必要あり
files.list
エンドポイントのレファレンス
files リソースのレファレンス