7

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

Для записи в Google Листе я использую:

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" 
} 

Как Scope Authentication Я использую

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

ли вы проверить ваш [ 'клиент-secret.json'] (https://developers.google.com/sheets/guides/authorizing# установленных приложений)? Или воспользовались соответствующими [областями] (https://developers.google.com/sheets/guides/authorizing#OAuth2Authorizing) в авторизационном запросе для электронных таблиц. Надеюсь, это поможет. –

+0

Попытайтесь использовать assert_prompt = false при создании потока auth. – hoozecn

+0

@ Mr.Rebot Я воссоздал client-secret.json, но ничего не изменилось. Что касается областей - пользуюсь ли я правильным, как я сказал в оригинальном сообщении? –

ответ

9

Видимо есть несколько вопросов вместе:

  1. Удалить учетные данные, которые были сохранены в /Users/XXX/.credentials.
  2. Изменить области применения на таблицыScopes.SPREADSHEETS.
  3. Вкладка «Поделиться и редактировать» в листе «Лист».

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

+0

Сэр, вы спасли жизнь здесь. –

+0

Удаление скрепок и изменение области работы. Спасибо, Алекс :) – Rameshwar

0

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

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

1

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

SheetsScopes.SPREADSHEETS.READONLY 

Для

SheetsScopes.SPREADSHEETS 

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

0

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