2016-05-19 9 views
0

Ich habe eine Web-App, mit der Benutzer Dateien hochladen können. Ich habe ein Google-Konto speziell für meine Webanwendung erstellt, z. B. [email protected] Ich möchte, dass jede Datei, die ein Nutzer aus meiner Web-App lädt, auf dem Google Drive meiner Web-App gespeichert wird. Ich verwende die folgende Methode, um eine Datei auf Google Drive hochzuladen und funktioniert einwandfrei. Aber das Problem ist die Datei wird auf dem Google Drive der Person selbst gespeichert, wenn er ein Google-Konto hat. Wo im Code kann ich sagen, um Datei auf [email protected] hochzuladen?Datei auf ein gemeinsames Google-Laufwerk hochladen

function uploadFile(evt) { 
     alert('Hello'); 
     gapi.client.load('drive', 'v2', function() { 
      insertFile(); 
     }); 
     } 

     /** 
     * Insert new file. 
     */ 
     function insertFile() { 
     const boundary = '-------314159265358979323846264'; 
     const delimiter = "\r\n--" + boundary + "\r\n"; 
     const close_delim = "\r\n--" + boundary + "--"; 
     var appState = { 
      number: 12, 
      text: 'hello' 
     }; 
     var fileName = 'csusbdt-drive-example-app-state.txt'; 
     var contentType = 'application/json'; 
     var metadata = { 
      'title': fileName, 
      'mimeType': contentType 
     }; 
     var base64Data = btoa(JSON.stringify(appState)); 
     var multipartRequestBody = 
      delimiter + 
      'Content-Type: application/json\r\n\r\n' + 
      JSON.stringify(metadata) + 
      delimiter + 
      'Content-Type: ' + contentType + '\r\n' + 
      'Content-Transfer-Encoding: base64\r\n' + 
      '\r\n' + 
      base64Data + 
      close_delim; 
     var request = gapi.client.request({ 
      'path': '/upload/drive/v2/files', 
      'method': 'POST', 
      'params': {'uploadType': 'multipart'}, 
      'headers': { 
       'Content-Type': 'multipart/mixed; boundary="' + boundary + '"' 
      }, 
      'body': multipartRequestBody}); 
     request.execute(function(arg) { 
      console.log(arg); 
     }); 
     } 

Antwort

0

"Wo im Code kann ich sagen, um Datei auf [email protected] hochzuladen?"

Es funktioniert nicht so. An einem bestimmten Punkt Ihrer Code-Initialisierung haben Sie ein Access Token angefordert. Es ist dieses Access Token, das bestimmt, auf welches Google Drive-Konto hochgeladen wird. Der gesamte Google-Beispielcode zeigt, wie Sie einen Zugriffstoken für das Konto des aktuellen Benutzers erhalten, also nehme ich an, dass Sie diese Kopie eingefügt haben.

Was Sie brauchen, ist ein Access Token für Ihr Speicherkonto. Der beste Weg, eine davon zu erhalten, besteht darin, zunächst ein Refresh-Token zu erhalten, das Sie an einem sicheren Ort auf einem Server speichern, und dann einen Endpunkt zu erstellen, um ein Access Token für das Speichern von Refresh-Token zurückzugeben.

jedoch ...

Sie müssen sehr bewusst die Auswirkungen auf die Sicherheit sein, was Sie zu tun versuchen. GDrive verfügt über sehr grobkörnige Berechtigungen. Dies bedeutet, dass jeder Benutzer mit einem Zugriffstoken, der Einfügungen zulässt, auch vorhandene Inhalte löschen oder ändern kann.

Aufgrund der Sicherheitsbedenken, würde ich vorschlagen, dass Sie einen GDrive Proxy Server haben, der den Zugriff auf GDrive handhabt und nur sichere Operationen zulässt.

+0

der letzte Absatz ist der wichtigste. Sie möchten serverseitigen Oauth-Flow, nicht clientseitig. –