Запись в GoogleSheet через API с Java

Я пытаюсь записать значение в ячейку с помощью API Google Sheet с Java. Для чтения я использовал руководство из Java Quickstart, которое мне подошло.

Для записи в Google Sheet я использую:

service.spreadsheets().values().update(spreadsheetId, "Sheet1!A4:H", response).execute();

Эта функция выводит следующую ошибку во время работы:

com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden
{
  "code" : 403,
  "errors" : [ {
    "domain" : "global",
    "message" : "Request had insufficient authentication scopes.",
    "reason" : "forbidden"
  } ],
  "message" : "Request had insufficient authentication scopes.",
  "status" : "PERMISSION_DENIED"
}

В качестве области аутентификации я использую

private static final List<String> SCOPES = Arrays.asList(SheetsScopes.SPREADSHEETS);

person Alex Kolo    schedule 30.05.2016    source источник
comment
Вы проверили свой файл client-secret.json? Или использовали правильные области действия при авторизации запроса электронной таблицы. Надеюсь, это поможет.   -  person Mr.Rebot    schedule 31.05.2016
comment
Попробуйте использоватьaptation_prompt=false при построении потока авторизации.   -  person hoozecn    schedule 01.06.2016
comment
@Mr.Rebot Я воссоздал client-secret.json, но ничего не изменилось. Что касается прицелов - я использую тот, который я указал в исходном сообщении?   -  person Alex Kolo    schedule 01.06.2016
comment
@hoozecn Можете ли вы объяснить больше о потоке, пожалуйста?   -  person Alex Kolo    schedule 01.06.2016


Ответы (4)


По-видимому, было несколько проблем вместе:

  1. Удалите учетные данные, которые были сохранены в /Users/XXX/.credentials.
  2. Измените области действия на SheetsScopes.SPREADSHEETS.
  3. Параметры Google Sheet Share и Edit на самом листе.

Теперь это работает! Спасибо ребята за помощь

person Alex Kolo    schedule 08.06.2016
comment
Сэр, вы спасли здесь жизнь. - person Berk Olcay; 09.03.2017
comment
Удаление Creds и изменение области действия сработало для меня. Спасибо Алекс :) - person Rameshwar; 20.07.2017

У меня была такая же проблема. Я решил проблему, которая была в области. я только что изменил

SheetsScopes.SPREADSHEETS.READONLY

To

 SheetsScopes.SPREADSHEETS

И это работает очень хорошо.

person TSR    schedule 26.08.2016

Java API должен использоваться в интерактивном режиме, если вы используете его на сервере, который не может открыть веб-браузер (который позволит вам утвердить диалоговое окно OAuth), тогда процесс аутентификации не будет правильным учетные данные и не будет работать.

Во время этого вы видите всплывающее окно браузера для утверждения диалогового окна OAuth? Если нет, вы, вероятно, работаете в сеансе без головы и вам потребуются другие средства для получения учетных данных пользователя.

person Sam Berlin    schedule 07.06.2016

Попробуйте заменить "Лист1!A4:H" на A4:H.

person Hemant Yadav    schedule 26.08.2016