É possível compartilhar um arquivo publicamente através da API do Google Drive?

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

  •  11-12-2019
  •  | 
  •  

Pergunta

Eu estou trabalhando em Google drive application o que permitirá ao usuário criar um arquivo que deve ser público.

Pude ver alguns exemplos onde podemos criar um arquivo no Google Drive através de APIs.

Mas, ao criar um arquivo, é possível compartilhar um arquivo como public.

Foi útil?

Solução

Você pode definir a lista de controle de acesso do arquivo usando o feed de permissões.A documentação está localizada aqui:

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

Para tornar um arquivo público você precisará atribuir a função reader para o tipo anyone

Então, se quiser um link para compartilhar com as pessoas, você pode pegar o webContentLink URL retornado nos metadados do arquivo na API, permitirá que qualquer usuário baixe o arquivo.Você também pode usá-lo para incorporar o arquivo compartilhado em HTML (por exemplo, imagens em <img> Tag) .

Outras dicas

Acho que seria bom mostrar o exemplo de código com base na resposta fornecida pela Nivco.Usando Javascript você pode fazer assim:

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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top