¿Es posible compartir un archivo públicamente a través de la API de Google Drive?

StackOverflow https://stackoverflow.com//questions/11665215

  •  11-12-2019
  •  | 
  •  

Pregunta

Estoy trabajando en Google drive application, lo que permitirá al usuario crear un archivo que debe ser público.

Podría ver algunos ejemplos en los que podemos crear un archivo en Google Drive a través de API.

pero, Mientras crea un archivo, es posible compartir un archivo como public.

¿Fue útil?

Solución

Puede configurar la lista de control de acceso del archivo con el feed de permisos.La documentación se encuentra aquí:

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

Para hacer un archivo público, deberá asignar el rol GreenacodiCetAnGode al tipo reader

Entonces, si desea un enlace para compartir con las personas, puede agarrar la URL de anyone devuelta en los metadatos del archivo en la API, permitirá a los usuarios descargar el archivo.También puede usarlo para incrustar el archivo compartido en HTML (por ejemplo, imágenes en las etiquetas GeneracDicetAtCode).

Otros consejos

Creo que sería bueno mostrar el ejemplo del código basado en la respuesta que proporcionó NIVCO.Usando JavaScript puedes hacerlo así:

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;

};

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top