2012-07-26 7 views

Antwort

19

Sie können die Zugriffskontrollliste der Datei mithilfe des Berechtigungsfeeds festlegen. Die Dokumentation befindet sich hier:

https://developers.google.com/drive/v2/reference/permissions

Um eine Datei öffentlich machen Sie die Rolle reader dem Typ anyone

Dann zuweisen müssen, wenn Sie einen Link wollen Menschen zu teilen, können Sie greifen Sie auf die webContentLink URL zurück, die in den Metadaten der Datei in der API zurückgegeben wird, damit alle Benutzer die Datei herunterladen können. Sie können es auch verwenden, um die freigegebene Datei in HTML einzubetten (z. B. Bilder in Tags).

+1

Wenn Sie eine Datei mithilfe von Berechtigungen öffentlich machen, müssen Sie auch "value" festlegen, was in der Dokumentation als "die E-Mail-Adresse oder der Domänenname für die Entität" beschrieben wird. Was sollte "Wert" sein, wenn Sie möchten, dass die Datei mit "webContentLink" öffentlich verfügbar ist und Sie nicht möchten, dass der Nutzer bei Google Drive angemeldet ist? – user1501783

+1

Der Wert kann ein leerer sein String: '' – Nivco

+0

Antwort ist richtig, aber wenn Sie den Sharing-Link greifen, ist es besser, etwas wie 'https://drive.google.com/open?id={your ID}' zu verwenden. Dies liegt daran, dass 'WebContentLink' leer ist, wenn es sich bei dem freigegebenen Element um ein Verzeichnis handelt. Darüber hinaus bietet 'WebContentLink' einen direkten Download-Link, für den keine Online-Vorschau verfügbar ist. –

3

Ich denke, dass wäre schön, das Codebeispiel basierend auf der Antwort von Nivco zu zeigen. Mit Javascript können Sie es so machen:

var google = require('googleapis'); 
var _ = require('lodash-node/compat'); 
var Q = require('q'); 
var OAuth2 = google.auth.OAuth2; 


var CLIENT_ID = '...'; 
var CLIENT_SECRET = '...'; 
var REDIRECT_URL = '...'; 

var shareFile = function (fileName) { 
    var deferred = Q.defer(); 
    var drive = google.drive('v2'); 
    var auth = new OAuth2(CLIENT_ID, CLIENT_SECRET, REDIRECT_URL); 

    drive.files.list({auth: auth}, function (err, res) { 
    var foundFile = _.first(_.filter(res.items, {title: fileName, "explicitlyTrashed": false})); 

    if (!foundFile) { 
     deferred.reject('File ' + fileName + ' has not been found.'); 
     return; 
    } 

    drive.permissions.list({fileId: foundFile.id, auth: auth}, function (err, res) { 

     if (_.isEmpty(_.find(res.items, 'role', 'reader'))) { 
      var body = { 
       'value': 'default', 
       'type': 'anyone', 
       'role': 'reader' 
      }; 

      drive.permissions.insert({ 
       fileId: foundFile.id, 
       resource: body, 
       auth: auth 
      }, function (err, res, body) { 
       deferred.resolve(body); 
      }); 
     } 
    }); 
}); 
return deferred.promise; 

};

Verwandte Themen