Как правильно авторизовать запрос к Google Cloud Storage API? - PullRequest
0 голосов
/ 04 ноября 2018

Я пытаюсь использовать JSON API Google Cloud Storage для извлечения файлов из корзины с помощью вызовов http.

Я извиваюсь из контейнера в GCE в том же проекте, что и хранилище, и учетная запись службы имеет доступ для чтения к корзине

Вот схема запросов:

https://storage.googleapis.com/{bucket}/{object}

Согласно консоли API, мне не нужно ничего особенного, поскольку учетная запись службы предоставляет учетные данные приложения по умолчанию. Тем не менее, я продолжаю иметь это:

Anonymous caller does not have storage.objects.get

Я также попытался создать ключ API для проекта и добавил его к URL-адресу (https://storage.googleapis.com/{bucket}/{object}?key={key}), но у меня все еще была та же ошибка 401.

Как я могу авторизовать запросы для запроса этого API?

Ответы [ 2 ]

0 голосов
/ 05 ноября 2018

Если вы можете создать другой кластер, вы можете получить разрешение, например: Нажмите в "avanced edit" first затем нажмите «Разрешить полный доступ ко всем облачным API» second

И это все: D

0 голосов
/ 05 ноября 2018

Неправильный URL-адрес, который вы используете. API используют URL, который начинается с https://www.googleapis.com/storage/v1/b.

Использование ключей API не рекомендуется. Вместо этого вы должны использовать Bearer: token. Я покажу оба метода.

Чтобы получить токен доступа для конфигурации по умолчанию для gcloud:

gcloud auth print-access-token

Затем используйте токен в вашем запросе curl. Замените TOKEN токеном из команды gcloud.

Для перечисления сегментов:

curl -s -H "Authorization: Bearer TOKEN" https://www.googleapis.com/storage/v1/b

curl https://www.googleapis.com/storage/v1/b?key=APIKEY

Для перечисления объектов:

curl -s -H "Authorization: Bearer TOKEN" https://www.googleapis.com/storage/v1/b/examplebucket/o

curl https://www.googleapis.com/storage/v1/b/examplebucket/o?key=APIKEY

Справочник по API: список сегментов

...