Google Drive APIを介して公式にファイルを共有することは可能ですか
-
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;
.
};
所属していません StackOverflow