Google Drive APIを介して公式にファイルを共有することは可能ですか

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

  •  11-12-2019
  •  | 
  •  

質問

Google drive applicationでは、ユーザーが公開されなければならないファイルを作成できるようになります。

私たちがAPIを介してGoogleドライブにファイルを作成できるいくつかの例を見ることができました。

ファイルの作成中は、ファイルをpublicとして共有することは可能です。

役に立ちましたか?

解決

アクセス許可フィードを使用してファイルのアクセス制御リストを設定できます。ドキュメントはここにあります:

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

ファイルを公開するためには、reader の型に役割anyoneを割り当てる必要があります。

それでは、あなたが人々に共有するためのリンクを望むならば、あなたはAPIのファイルメタデータで返されたwebContentLink URLをつかむことができます、それはユーザーがファイルをダウンロードすることを可能にするでしょう。共有ファイルを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