私はGoogle drive application
に取り組んでいます。公開する必要があるファイルを作成することができます。GoogleドライブAPIを使用してファイルを一般公開することは可能ですか
GoogleドライブでAPIを使用してファイルを作成できるいくつかの例があります。
ただし、 ファイルを作成しているときに、ファイルをpublic
として共有することはできますか?
私はGoogle drive application
に取り組んでいます。公開する必要があるファイルを作成することができます。GoogleドライブAPIを使用してファイルを一般公開することは可能ですか
GoogleドライブでAPIを使用してファイルを作成できるいくつかの例があります。
ただし、 ファイルを作成しているときに、ファイルをpublic
として共有することはできますか?
Permissionsフィードを使用してファイルのアクセス制御リストを設定できます。ドキュメントは次の場所にあります。
https://developers.google.com/drive/v2/reference/permissions
を使用すると、入力しanyone
に役割reader
を割り当てる必要がありますファイルを公開するには、リンクが人々に共有したい場合は、することができます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;
}
権限を使用してファイルをパブリックにするときは、ドキュメントに「エンティティの電子メールアドレスまたはドメイン名」と記載されている 'value'も設定する必要があります。 'webContentLink'を使用してファイルを一般公開し、そのユーザーがGoogleドライブにログインする必要がないようにするにはどうすればよいですか? – user1501783
値は空の文字列にすることができます: '' – Nivco
答えは正しいですが、共有リンクを取得するときは、 'https://drive.google.com/open?id={your ID}'のようなものを使用する方が良いでしょう。共有アイテムがディレクトリの場合、 'WebContentLink'は空になるからです。 Morover、 'WebContentLink'は、オンラインプレビューが利用できない直接ダウンロードリンクを提供します。 –