So verwenden Sie die Google Drive-API zum Herunterladen von Dateien mit Javascript

Ich möchte Dateien von Google Drive mit Javascript API herunterladen. Ich habe es geschafft, eine Liste von Dateien mit @ zu authentifizieren und zu ladegapi.client.drive.files Anfrage. Ich habe mich jedoch daran gehalten, diese Dateien herunterzuladen.
Mein Versuch, die Datei herunterzuladen:

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

Ich habe diese Fehler, wenn ich versuche, die oben genannten auszuführen:

(403) The user has not granted the app 336423653212 read access to the file 0B0UFTVo1BFVmeURrWnpDSloxQlE.

(400) Bad Request

Ich erkenne, dass die Dateien, die keine Google Drive-Datei sind (Google Doc, Google Slide), den Fehler 403 zurückgeben.
Ich bin neu in diesem. Jede Hilfe und Antwort wird sehr geschätzt.

Update 0

Aus der Google Drive-Dokumentation zuHandling API Error, hier ist ein Teil der Erklärung für400 errors

Dies kann bedeuten, dass ein erforderliches Feld oder ein erforderlicher Parameter nicht angegeben wurde, der angegebene Wert ungültig ist oder die Kombination der angegebenen Felder ungültig ist.

Das ist, weil ichalt:'media' in meinem Parameterobjekt.

Ich habe es versuchtgapi.client.drive.files.export, aber es funktioniert auch nicht und es gibt @ zurü(403) Insufficient Permission obwohl mein Google Drive-Konto die Bearbeitungsberechtigung für diese Dateien hat. Hier ist mein Code:

var request = gapi.client.drive.files.get({
    fileId:element.id,
});
request.then(function(resp){
    console.log(resp.result);
    type = resp.result.mimeType;
    id = resp.result.id;
    var request = gapi.client.drive.files.export({
        fileId:id,
        mimeType:type
    })
    request.execute(function(resp){
        console.log(resp);
    });
});

Update 1

Beyogen auf Abielita Antwort, Ich habe versucht, eine autorisierte HTTP-Anfrage zu stellen, aber die Datei wird nicht heruntergeladen. Es gibt tatsächlich die Dateiinformationen in @ zurücresponse undresponseText Attribut imXMLHttpRequest Objekt

  function test() {
    var accessToken = gapi.auth.getToken().access_token;
    var xhr = new XMLHttpRequest();
    xhr.open("GET", "https://www.googleapis.com/drive/v3/files/"+'1A1RguZpYFLyO9qEs-EnnrpikIpzAbDcZs3Gcsc7Z4nE', true);
    xhr.setRequestHeader('Authorization','Bearer '+accessToken);
    xhr.onload = function(){
        console.log(xhr);
    }
    xhr.send('alt=media');
  }

______________________________________________________

Ich habe herausgefunden, dass ich die URLs aller dieser Dateien aus dem Ordner mithilfe von '@' abrufen kanwebViewLink oderwebViewContent Attribute.

Eine Datei vom Typ Google Drive (Google Doc, Google Sheet usw.) hatwebViewLink Attribut. EINwebViewLink öffnet die Datei in Google Drive.

Eine Datei vom Typ "Nicht Google Drive" hatwebContentLink. EINwebContentLink lädt die Datei herunter.

Mein Code:

var request = gapi.client.drive.files.list({
    q:"'0Bz9_vPIAWUcSWWo0UHptQ005cnM' in parents", //folder ID
    'fields': "files(id, name, webContentLink, webViewLink)"
  });
request.execute(function(resp) {
        console.log(resp);
}

Antworten auf die Frage(6)

Ihre Antwort auf die Frage