# #google-cloud-platform #google-cloud-firestore #oauth-2.0 #google-api #google-cloud-storage
Вопрос:
Я новичок в API Google и уже несколько дней пытаюсь использовать учетную запись службы для загрузки контента в хранилище Google Cloud. Я могу это сделать, но только с помощью временного токена доступа, полученного с игровой площадки Google API, и мне нужно иметь возможность получать новые токены доступа, чтобы учетная запись службы всегда могла загружать контент.
Я экспериментировал со следующим, но мне все время отказывают в доступе, даже несмотря на то, что у рассматриваемой учетной записи есть разрешения «владельца».
curl -X POST / -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) -H "Content-Type: application/json; charset=utf-8" -d @Documents/request.json https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/content-uploader@kol-hatorah-kulah.iam.gserviceaccount.com:generateAccessToken
ответ:
{ "error": { "code": 403, "message": "The caller does not have permission", "status": "PERMISSION_DENIED" } }
Когда я запускаю gcloud config list
, я получаю правильный проект, и учетная запись-это моя рабочая электронная почта, которая также находится в облаке Google в качестве владельца.
Заранее спасибо!
Ответ №1:
Ваша curl
команда пытается использовать идентификатор учетной записи службы для создания маркера доступа. Команда не выполняется, потому что у вас нет разрешения.
Добавьте роль роли/iam.serviceAccountTokenCreator в идентификатор, выполняющий команду.
Комментарии:
1. Попробовал это. Получил ту же ошибку — хотя спасибо. Правка: возможно, это действительно сработало и заняло всего минуту. Я собираюсь подтвердить это, и если это сработает, я отмечу ваш ответ. Спасибо!
2. @DavidReese — Google Cloud IAM-это глобальная служба. Для глобального распространения изменений может потребоваться минута или две.