Я собираюсь отказаться от этого, так как не могу понять, что делаю неправильно.
У меня есть ведро облачного хранилища с данными выставления счетов наших компаний (объекты файлов json, написанные Google), которые я должен преобразовать в электронные таблицы.
Поскольку API-интерфейс приложений для oauth2 отсутствует, я использую пользовательскую библиотеку OAuth2, предоставленную Google, с ключом «1B7FSrk5Zi6L1rSxxTDgDEUsPzlukDsi4KGuTMorsTQHhGBzBkMun4iDF» и настроил запрос auth, как показано в этом примере
Токен создается и помещается в хранилище свойств скриптов, где я могу его просмотреть. Все идет нормально.
У меня есть этот код для запроса токена, а затем я пытаюсь перечислить содержимое корзины в функции "getFilesList ()":
function getService() {
return OAuth2.createService('CloudStoreGrab-Service')
.setTokenUrl('https://accounts.google.com/o/oauth2/token')
.setPrivateKey(creds_private_key)
.setIssuer(creds_client_email)
.setSubject(creds_user_email)
.setPropertyStore(PropertiesService.getScriptProperties())
.setScope(['https://www.googleapis.com/auth/drive','https://www.googleapis.com/auth/script.external_request','https://www.googleapis.com/auth/script.storage','https://www.googleapis.com/auth/spreadsheets']);
}
function getFilesList() {
var service = getService();
service.reset();
if (service.hasAccess()) {
var url = 'https://www.googleapis.com/storage/v1/b/'+bucket+'/o';
var response = UrlFetchApp.fetch(url, {
method: "GET",
muteHttpExceptions: true,
headers: {
Authorization: 'Bearer ' + service.getAccessToken()
}
});
}
Logger.log("Response:", response.getContentText())
}
Независимо от того, что я, кажется, пытаюсь, запрос всегда возвращает «403 Недостаточное разрешение». У учетной записи службы есть все необходимые роли и активированы разрешения (DwD, Storage-Administrator, Project-Owner). Когда я проверяю подлинность с теми же учетными данными из gcloud, а затем просматриваю корзину с помощью gsutils, я вижу список. Это заставляет меня думать, что я все еще неправильно запрашиваю токен аутентификации. Я попытался использовать сгенерированный токен с помощью curl и получил тот же ответ о недостаточном разрешении.
Что я делаю не так, запрашивая токен? Запрошенные объемы слишком узкие?