7

Sto provando a scrivere un valore in una cella con l'API di Google Sheet con Java. Per la lettura ho usato la guida da Java Quickstart che ha funzionato bene per me.Scrivi su GoogleSheet tramite API con Java

Per la scrittura a Google Foglio che uso:

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

Questa funzione emette il seguente errore durante la corsa:

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

come ambito di autenticazione Sto usando

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

Avete controllare il vostro [ 'client-secret.json'] (https://developers.google.com/sheets/guides/authorizing# file installato)? O utilizzato l'appropriato [scope] (https://developers.google.com/sheets/guides/authorizing#OAuth2Authorizing) nell'autorizzazione della richiesta per il foglio di calcolo. Spero che aiuti. –

+0

Provare a utilizzare approval_prompt = false quando si crea il flusso auth. – hoozecn

+0

@ Mr.Rebot Ho ricreato client-secret.json ma nulla è cambiato. Per quanto riguarda gli scopi - sto usando quello giusto come ho affermato nel messaggio originale? –

risposta

9

A quanto pare ci sono stati diversi problemi insieme:

  1. Eliminare le credenziali che sono stati conservati a /Users/XXX/.credentials.
  2. Cambia ambiti in fogli Fogli.SPREADSHEETS.
  3. Foglio Google Condividi e modifica opzioni sul foglio stesso.

Ora funziona! Grazie ragazzi per l'aiuto

+0

Signore, hai salvato una vita qui. –

+0

Eliminare i crediti e cambiare lo scope ha funzionato per me. Grazie Alex :) – Rameshwar

0

Il L'API Java deve essere utilizzata in modo interattivo, se la si esegue su un server che non può apparire come un browser Web er (che ti consente di approvare una finestra di dialogo OAuth), il flusso di autenticazione non ottiene credenziali adeguate e non funzionerà.

Durante l'esecuzione, viene visualizzato un browser per approvare una finestra di dialogo OAuth? In caso contrario, è probabile che tu stia correndo in una sessione senza head e avrà bisogno di altri mezzi per ottenere le credenziali dell'utente.

1

Stavo avendo lo stesso problema. Ho risolto il problema che era nel campo di applicazione. Ho appena cambiato

SheetsScopes.SPREADSHEETS.READONLY 

Per

SheetsScopes.SPREADSHEETS 

e funziona molto bene.

0

provare a sostituire "Sheet1 A4: H" con A4: H