Можно ли поделиться файлом публично через Google Drive API?

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

  •  11-12-2019
  •  | 
  •  

Вопрос

я работаю над Google drive application который позволит пользователю создать файл, который должен быть общедоступным.

Я мог видеть пример, где мы можем создать файл на диске Google через API.

Но, создавая файл, возможно ли поделиться файлом как public.

Это было полезно?

Решение

Вы можете установить список контроля доступа к файлу с помощью канала «Разрешения».Документация находится здесь:

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

Чтобы сделать файл общедоступным, вам нужно будет назначить роль reader к типу anyone

Затем, если вы хотите поделиться ссылкой с людьми, вы можете получить webContentLink URL-адрес, возвращаемый в метаданных файла в API, позволит любому пользователю загрузить файл.Вы также можете использовать его для встраивания общего файла в HTML (например, изображения в <img> теги).

Другие советы

Я думаю, что это было бы приятно показать пример кода, основанный на ответе, который предоставлен NIVCO.Использование JavaScript вы можете сделать это:

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

};

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top