У нас возникли проблемы с доступом к API реселлера с использованием служебных учетных записей.Пример с клиентскими секретами работает хорошо, но нам нужно было бы развернуть его в k8s (Kubernetes Engine) без необходимости регулярно обновлять сеанс oauth (особенно делать это один раз, поскольку это довольно сложно в контейнере Docker).
Несмотря на то, что имеется много документации о том, как это сделать с помощью python, мы не смогли найти какой-либо способ получить доступ с использованием служебной учетной записи.
Мы попробовали две учетные записи, одна из которых была по умолчанию для вычислительной машины.и один, созданный непосредственно для нашего варианта использования.Оба получили область действия реселлера в G Suite.
https://www.googleapis.com/auth/apps.order,
https://www.googleapis.com/auth/admin.directory.user,
https://www.googleapis.com/auth/siteverification,
Мы продолжаем получать "googleapi: Error 403: Authenticated user is not authorized to perform this action., insufficientPermissions"
ошибок, хотя при использовании
client, err = google.DefaultClient(ctx, reseller.AppsOrderScope)
if err != nil {
log.Fatal("creating oauth client failed", zap.Error(err))
}
subs, err := client.Subscriptions.List().Do()
if err != nil {
log.Fatal("listing subscriptions failed", zap.Error(err))
}
я прочитал в посте на StackOverflow, что Reseller API требуетолицетворение пользователя, но поиск по этому вопросу в Google и репозитории oauth2 и client lib не привели к этому.Python делает это, как описано в сквозном руководстве
credentials = ServiceAccountCredentials.from_json_keyfile_name(
JSON_PRIVATE_KEY_FILE,
OAUTH2_SCOPES).create_delegated(RESELLER_ADMIN_USER)
, но для Go я не смог найти никакого документированного способа сделать это.