Я аутентифицируюсь, задав в переменной среды GOOGLE_APPLICATION_CREDENTIALS
путь к ключу для моей учетной записи службы App Engine (например, example@appspot.gserviceaccount.com
).
Если календарь используется совместно с учетной записью службы App Engine Я могу сделать это просто:
let googleCalendar = google.calendar({
version: 'v3',
auth: new google.auth.GoogleAuth({
scopes: ['https://www.googleapis.com/auth/calendar'],
})
});
Но я хочу, чтобы пользователи поделились своим календарем с другой учетной записью службы, google-calendar@example.iam.gserviceaccount.com
. Поэтому я хочу, чтобы учетная запись службы App Engine олицетворяла учетную запись google-calendar
. Я пробовал это (и несколько других незначительных изменений):
let googleCalendar = google.calendar({
version: 'v3',
auth: new google.auth.GoogleAuth({
clientOptions: {
subject: 'google-calendar@uniserval-app.iam.gserviceaccount.com'
},
scopes: ['https://www.googleapis.com/auth/calendar'],
})
});
Я получаю ошибку 401: Client is unauthorized to retrieve access tokens using this method, or client not authorized for any of the scopes requested.
Я попытался сделать свою учетную запись службы App Engine участником на google-calendar
служебная учетная запись и предоставление ей различных ролей, таких как Service Account User
и Service Account Token Creator
- но ничего не меняется.
Я подозреваю, что код правильный, и у меня просто не настроены нужные роли ... но на данный момент я искал, как это сделать в течение 2 дней, и я не могу найти никакой документации о том, как именно это сделать.