Я пытаюсь программно обновить общедоступную электронную таблицу (которую может редактировать любой) через API, но это не удается
401 - «Запрос не имеет действительных учетных данных для аутентификации».
Я ожидал, что мне не понадобятся «действительные учетные данные для аутентификации», поскольку это общедоступная редактируемая электронная таблица. Я могу ПОЛУЧИТЬ данные из таблицы просто отлично, хотя мне пришлось сгенерировать API-ключ «браузера», поскольку, по-видимому, использование ключа Android не работает.
Кто-нибудь знает, есть ли уловка, чтобы заставить обновление работать, или это невозможно с API?
Пример кода, который я взламываю вместе:
// Don't think I even need this?
GoogleCredential credential = new GoogleCredential();
credential.createScoped(Collections.singleton(SheetsScopes.SPREADSHEETS));
HttpTransport transport = AndroidHttp.newCompatibleTransport();
JsonFactory factory = JacksonFactory.getDefaultInstance();
final Sheets sheets = new Sheets.Builder(transport, factory, credential)
.setApplicationName("My Awesome App")
.build();
final String sheetID = "[ID Of Valid Public Spreadsheet Here]";
final String range = "A:S";
final ValueRange content = new ValueRange();
content.set("Column A Name", "Some Value to Set");
new Thread() {
@Override
public void run() {
try {
UpdateValuesResponse valueRange = sheets.spreadsheets().values()
.update(sheetID, range, content)
.setKey("My-Valid-Browser-Api-Key")
.execute();
mLog.D("Got values: " + valueRange);
}
catch (IOException e) {
mLog.E("Sheets failed", e);
}
}
}.start();