2017-01-27 1 views
1

Ich verwende die Google Drive API v3, um eine Datei abzurufen. Ich kann Dateien hochladen und Dateien auflisten, aber der Aufruf von files.get gibt 'false' zurück. Die Dokumentation ist ziemlich spärlich (https://developers.google.com/drive/v3/reference/files/get)Warum gibt Javascript Google Drive-API 'falsch' als Antwort zurück?

var contentRequest = gapi.client.drive.files.get({ 
    fileId: fileId, 
    alt: 'media' 
    }); 
    contentRequest.execute(function(resp) { 
    console.log(resp); // resp = false 
    }); 

Wenn ich die „alt:‚Medien‘“ entfernen Parameter, dann bekomme ich wieder die Metadaten wie in der Dokumentation beschrieben. Ich habe auch versucht mit:

gapi.client.request 
    ({ 
    'path': '/drive/v3/files/'+fileId, 
    'method': 'GET', 
    'params': {'fileId': fileId, 'alt': 'media'}, 
    'headers': {'Authorization': 'Bearer ' + gapi.auth.getToken().access_token } 
    }).execute(function(file) { 
     // file = false 
     }); 

Die einzige Brotkrümel der Hoffnung, dass ich in der Google-Client REST-API-Dokumentation begraben liegt finden weg, die besagt, dass die Antwort ‚falsch‘, wenn nicht JSON-parseable ist. https://developers.google.com/api-client-library/javascript/features/promises

Der Dateityp scheint keinen Unterschied zu machen ... Bisher habe ich versucht, .html und .txt.

Antwort

0

Ich glaube, dies ist der Link suchen:)

https://developers.google.com/drive/v3/web/manage-downloads

Herunterladen der Datei muss der Benutzer mindestens Lesezugriff haben. Darüber hinaus muss Ihre App mit einem Bereich autorisiert sein, der das Lesen von Dateiinhalten ermöglicht. Beispielsweise wäre eine App, die den drive.readonly.metadata-Bereich verwendet, nicht berechtigt, den Dateiinhalt herunterzuladen. Benutzer mit Bearbeitungsberechtigung können das Herunterladen durch schreibgeschützte Benutzer einschränken, indem sie das Feld vieursCanCopyContent auf true festlegen.

+0

Dies beantwortet die Frage nicht. Ich habe dasselbe Problem und habe bereits den Verweis gelesen (und verfolgt). Ich bekomme als Antwort eine falsche Antwort, da ich vollen Zugriff auf das Laufwerk habe und {fileId: id, alt: 'media'}) in der Anfrage verwende. –

0

Sie müssen den zweiten Parameter des Rückrufs verwenden - er sollte die rohe Antwort enthalten.

request.execute(function(jsonResp, rawResp) { 
    console.log('rawResp: ', rawResp); 
    var respObject = JSON.parse(rawResp); // rawResp is encoded JSON string with header, body, etc. 
    var respBody = respObject.gapiRequest.data.body; // in my case here it outputs the text of my txt file 
}); 

Die Callback-Funktion, welche die Anforderung ausführt, wenn erfolgreich ist oder fehlschlägt. jsonResp enthält die als JSON analysierte Antwort. Wenn die Antwort nicht JSON ist, ist dieses Feld falsch. RawResp ist die HTTP-Antwort. Es ist JSON und kann zu einem Objekt geparst werden, das die Felder body, headers, status und statusText enthält.

src: https://developers.google.com/api-client-library/javascript/reference/referencedocs#gapiclientrequest

P. S. Netter Fund mit Dokumenten über "nicht JSON-Parseable"! Es hat mir geholfen, das zu lösen!

Verwandte Themen