niczky12
niczky12

Reputation: 5073

Is there a way to authenticate gspread with the default service account?

If I want to create/read/update spreadsheets using gspread, I know first have to authenticate like so:

import gspread

gc = gspread.service_account()

Where I can also specify the filename to point to a service account json key, but is there a way I can tell gspread to use the default service account credentials without pointing to a json?

My use-case is that I want to run gspread in a vm (or cloud function) that already comes with an IAM role and I can't seem to figure out where to get the json file from. I also don't want to copy the json to the vm unnecessarily.

Upvotes: 4

Views: 4345

Answers (2)

Mahboob
Mahboob

Reputation: 1975

As per the use case, Cloud function has Runtime service account feature which allows you to use default service account or you can attach any service account to the cloud function.

Using this library you can do the thing without json file.

import google.auth

credentials, project_id = google.auth.default()

Upvotes: 0

tector
tector

Reputation: 1048

You can use google.auth to get the credentials of the default service account. Then you can use gspread.authorize() with these credentials:

import google.auth
import gspread

credentials, project_id = google.auth.default(
    scopes=[
        'https://spreadsheets.google.com/feeds',
        'https://www.googleapis.com/auth/drive'
    ]
)
gc = gspread.authorize(credentials)

Upvotes: 4

Related Questions