2016-05-19 14 views
11

Non riesco a ottenere una risposta dalla v4 dell'API di Google Sheets quando si esegue contro un pubblico (ovvero "Pubblicato sul Web" E condiviso con "Chiunque sul sito" Web ") foglio di calcolo.L'API di Google Sheets v4 riceve risposte HTTP 401 per i feed pubblici

Le rilevanti stati di documentazione:

"Se la richiesta non necessita di autorizzazione (ad esempio una richiesta di dati pubblici), quindi l'applicazione deve fornire sia la chiave API o un 2.0 di token OAuth o entrambi - qualsiasi opzione è più conveniente per te. "

E per fornire la chiave API, la documentazione afferma:

"Dopo aver ottenuto una chiave API, l'applicazione può accodare il tasto del parametro query = yourAPIKey a tutti gli URL di richiesta."

Così, ho dovrei essere in grado di ottenere una risposta che elenca i fogli in un foglio di calcolo pubblico al seguente URL:?

https://sheets.googleapis.com/v4/spreadsheets/ {spreadsheetId} key = {myAPIkey}

(con, ovviamente , l'ID e la chiave in dotazione nella stringa di percorso e di query rispettivamente)

Tuttavia, quando faccio questo, ottengo un HTTP 401 risposta:

{ 
    error: { 
    code: 401, 
    message: "The request does not have valid authentication credentials.", 
    status: "UNAUTHENTICATED" 
    } 
} 

Qualcun altro può farlo funzionare su una cartella di lavoro pubblica? In caso contrario, chiunque può monitorare questa discussione dal lato Google o commentare o fornire un campione funzionante?

+0

stai usando il comando GET con l'URL che assomiglia a qualcosa: "GET sheets.googleapis.com/v4/spreadsheets/spreadsheetId{spreadsheetId}?key= {myAPIk ey} quindi pubblicandolo nel navigatore URL bar? – noogui

+0

Con uno schema "https", il token "{spreadsheetId}" sostituito dall'ID di un foglio di calcolo pubblico e il token "{myAPIkey}" sostituito da una chiave API valida per il mio progetto, si. –

+0

hai provato la mia risposta aggiornata? – noogui

risposta

6

Recentemente abbiamo risolto questo problema e ora dovrebbe funzionare. Ci scusiamo per i problemi, per favore riprova.

Il documento deve essere condiviso con "Chiunque abbia il link" o "Pubblico sul Web". (Nota: le impostazioni di pubblicazione da "File -> Pubblica sul Web" sono irrilevanti, a differenza dell'API v3.)

+0

Grazie, Sam. Non vedo l'ora che arrivi la correzione –

+0

Quindi, qual è la soluzione per ora? Questo non funziona ancora e non riesco a trovare alcun documento da v3 su come ottenere questo. – Jascination

+0

@Jascination prova la mia risposta aggiornata;) – noogui

10

Sono riuscito a farlo funzionare. Anche io all'inizio ero frustrato. E questo non è un bug. Ecco come l'ho fatto:

  1. Innanzitutto, abilitali in GDC per eliminare gli errori di autenticazione.

-Google Apps Script Execution API

Fogli -Google API

Nota: Assicurarsi che l'account Google che hai utilizzato in GDC deve essere lo stesso account che si sta utilizzando nel progetto di foglio di calcolo altro potresti ricevere un messaggio di errore "The API Key and the authentication credential are from different projects".

  1. Vai a https://developers.google.com/oauthplayground in cui verranno acquisiti token di autorizzazione.
  2. Al passo 1, selezionare API di Google Fogli v4 e scegliere l'ambito https://www.googleapis.com/auth/spreadsheets in modo da avere le autorizzazioni di lettura e scrittura bot.
  3. Fare clic sul pulsante Autorizza API. Consentire l'autenticazione e procedere al passaggio 2.
  4. Al passaggio 2, fare clic su Codice di autorizzazione per il token pulsante. Successivamente, vai al passaggio 3.
  5. Al passaggio 3, è ora di incollare la richiesta URL. Poiché il metodo server predefinito è GET, procedi e fai clic su Invia il pulsante di richiesta.

Nota: Assicurarsi che le richieste di URL sono quelli indicati nel Spreadsheetv4 docs.

Ecco il mio campione richiesta URL:

https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID?includeGridData=false 

ho ottenuto un HTTP/1.1 200 OK e visualizzati i miei dati richiesti. Questo vale per tutti i processi lato server di Spreadsheetv4.

Spero che questo aiuti.

+0

Ho appena provato questo approccio, ma ho ottenuto gli stessi risultati descritti nel post originale. Apparentemente, questo potrebbe essere un problema noto come Sam ha indicato. Se lo fai funzionare, ti prego, fammi sapere. –

+0

@JonShrike Gentilmente prova la mia risposta aggiornata :) – noogui

+0

Funziona solo quando provata da GDC, ho provato a usare lo stesso token usando Curl e fallisce. Anche l'approccio key = {API KEY} non funziona. Mi chiedo se è stato risolto! – wabbit

Problemi correlati