Frage

Ich arbeite an Google drive application Dadurch kann der Benutzer eine Datei erstellen, die öffentlich sein muss.

Ich könnte mir ein Beispiel ansehen, in dem wir über APIs eine Datei in Google Drive erstellen können.

Ist es beim Erstellen einer Datei jedoch möglich, eine Datei als public.

War es hilfreich?

Lösung

Sie können die Zugriffskontrollliste der Datei mithilfe des Berechtigungs-Feeds festlegen.Die Dokumentation finden Sie hier:

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

Um eine Datei öffentlich zu machen, müssen Sie die Rolle zuweisen reader zum Typ anyone

Wenn Sie dann möchten, dass ein Link mit anderen geteilt wird, können Sie darauf zugreifen webContentLink Die in den Dateimetadaten in der API zurückgegebene URL ermöglicht allen Benutzern das Herunterladen der Datei.Sie können es auch verwenden, um die freigegebene Datei in HTML einzubetten (z. B. Bilder in <img> Stichworte) .

Andere Tipps

Ich denke, es 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;

};

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top