Google-Picker und Backend-Datei herunterladen

8

Ich verwende den Google-Picker in meiner Web-App, damit der Benutzer Dateien von seinem Google-Laufwerk durchsuchen und auswählen kann. Sobald er die Auswahl getroffen hat, gibt der Picker verschiedene Daten über ausgewählte Dateien zurück, einschließlich Datei-ID und URL. Mein Ziel ist es, die ausgewählten Dateien auf den Server herunterzuladen. Wenn ich die URL an mein Backend-Skript übergebe, kann es keine private Datei herunterladen. Ich weiß, dass ich wahrscheinlich die angegebene Datei-ID verwenden kann, um über die Drive-API auf die Datei zuzugreifen, aber dafür benötige ich ein Zugriffstoken. Daher müsste ich den Benutzer bitten, mir die Erlaubnis zu erteilen, oauth flow zu verwenden. Ich will das nicht machen. Wenn der Benutzer eine Datei mit der Google-Auswahlfunktion ausgewählt hat, erteilt er meiner App implizit die Berechtigung zum Zugriff auf die Datei. Warum kann ich keine öffentliche Download-URL abrufen, auf die ich ohne Token zugreifen kann? So funktioniert Dropbox chooser, glaube ich.

Fehle ich etwas hier und gibt es eine Möglichkeit zu erreichen, was ich versuche ohne oauth Authentifizierung zu gehen. Also, was ich brauche, ist folgendes:

  1. Der Benutzer wählt eine Datei mithilfe der Auswahl
  2. aus
  3. Picker bietet eine öffentliche Download-URL (temporäre URL ist OK)
  4. Ich übergebe diese URL an mein Backend-Skript, das dann die Datei
  5. herunterlädt

Alternativ könnte ich eine Lösung wie diese verwenden:

  1. Der Benutzer wählt eine Datei mithilfe der Auswahl
  2. aus
  3. Picker bietet die Datei-ID und ein OAUTH-Zugriffstoken
  4. Ich gebe die Datei-ID und das Token an mein Backend-Skript weiter, das dann mit dem bereitgestellten Zugriffstoken auf die Google Drive API zugreifen und die Datei herunterladen kann.
Pavle Predic 25.10.2013, 14:36
quelle

1 Antwort

3

Schließlich habe ich eine Lösung gefunden.

Wenn Sie eine Datei herunterladen möchten, benötigen Sie zwei Variablen - oAuthToken und fileId

oAuthToken erhalten Sie von der JS-Client-Seite, wenn sich der Benutzer authentifiziert. Wenn Sie das Beispiel aus Google Docs ( CSSL ) verwenden, sieht die Funktion folgendermaßen aus:

%Vor%

fileId erhalten Sie, wenn der Benutzer eine Datei auswählt. Wieder ein modifiziertes Beispiel aus Google Docs:

%Vor%

Wahrscheinlich werden Sie diese Daten als Formularanforderung oder über Ajax weitergeben. Einfacher cURL-Aufruf vom Backend zum Herunterladen der Datei:

%Vor%

Dokumente zum Dateidownload: Ссылка Eigentlich wurde uns alles gegeben, aber wir konnten unseren Verstand nicht ein wenig bewegen, um den tatsächlichen Code zu erkennen:)

    
Mārtiņš Briedis 24.08.2015 06:56
quelle