是否可以通过Google Drive API公开共享文件

Fiz*_*han 11 google-drive-api

我正在努力Google drive application,它将允许用户创建必须公开的文件.

我可以看到一些示例,我们可以通过API在Google云端硬盘中创建文件.

但是,在创建文件时,是否可以共享文件public.

Nic*_*ier 22

您可以使用"权限"源设置文件的"访问控制列表".文档位于:

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

要公开文件,您需要将角色分配reader给该类型anyone

然后,如果您想要一个链接分享给人,您可以获取webContentLinkAPI中的文件元数据中返回的URL,它将允许任何用户下载该文件.您还可以使用它将共享文件嵌入到HTML中(例如<img>标记中的图像).


Bog*_*nko 7

我认为根据 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;
Run Code Online (Sandbox Code Playgroud)

};