Closed11

共有ドライブ書き込み

qatocoqatoco

クライアント・クレデンシャルズフロー

サービスアカウントという専用のアカウントとして認証することで、ユーザーへの認証は行わずアプリが直接サーバーにアクセスを要求する方式です。
OAuth2.0で定義されているクライアント・クレデンシャルズフローにあたります

既に管理者から許可されているため、ドメイン内のユーザーデータにアクセスする際ユーザーの同意などは不要になります。また、許可する際にスコープを指定できるため、許可された範囲外のデータにはアクセスできないようにもできます。

私はAWSで言うAssume Roleを許可する設定だと認識しました

https://qiita.com/nakagam3/items/4214633077b4b5b835a1

qatocoqatoco

credential作成: domain wide delegation利用

from google.oauth2 import service_account

SCOPES = [
    "https://www.googleapis.com/auth/sqlservice.admin"
]
SERVICE_ACCOUNT_FILE = "/path/to/service.json"

credentials = service_account.Credentials.from_service_account_file(
    SERVICE_ACCOUNT_FILE,
    scopes=SCOPES,
    subject="user@domain.com",
)

https://github.com/googleapis/google-api-python-client/blob/main/docs/oauth-server.md#using-domain-wide-delegation

  • サービスアカウントに対するAPIリクエストの認可はuser@domain.com に対するものとして認可される
qatocoqatoco

scope一覧

https://developers.google.com/identity/protocols/oauth2/scopes

https://www.googleapis.com/auth/drive See, edit, create, and delete all of your Google Drive files
https://www.googleapis.com/auth/drive.file See, edit, create, and delete only the specific Google Drive files you use with this app
https://www.googleapis.com/auth/drive.readonly See and download all your Google Drive files
https://www.googleapis.com/auth/spreadsheets See, edit, create, and delete all your Google Sheets spreadsheets
https://www.googleapis.com/auth/spreadsheets.readonly See all your Google Sheets spreadsheets

qatocoqatoco
google.auth.exceptions.RefreshError: (
    "invalid_scope: https://www.googleapis.com/auth/drive.file\t is not a valid audience string.",
    {
        "error": "invalid_scope",
        "error_description": "https://www.googleapis.com/auth/drive.file\t is not a valid audience string.",
    },
)
このスクラップは1ヶ月前にクローズされました