Domanda

Sto lavorando su Google drive application che consentirà all'utente di creare un file che deve essere pubblico.

Ho potuto vedere un esempio in cui possiamo creare un file in Google Drive tramite API.

ma, Durante la creazione di un file, è possibile condividere un file come public.

È stato utile?

Soluzione

È possibile impostare l'elenco di controllo dell'accesso del file utilizzando il feed Autorizza.La documentazione si trova qui:

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

.

Per creare un file pubblico dovrai assegnare il ruolo reader al tipo anyone

Quindi, se si desidera un collegamento da condividere alle persone, è possibile afferrare l'URL webContentLink restituito nei metadati del file nell'API, consentirà a tutti gli utenti di scaricare il file.Puoi anche usarlo per incorporare il file condiviso in HTML (ad esempio immagini nei tag <img>).

Altri suggerimenti

Penso che sarebbe bello mostrare l'esempio del codice in base alla risposta che fornita da Nivco.Usando JavaScript puoi farlo in quel modo:

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;
.

};

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top