我正在致力於Google drive application
這將允許用戶創建必須公開的文件。是否可以通過Google Drive API公開共享文件
我可以看到一些例子,我們可以通過API在Google驅動器中創建一個文件。
但是, 在創建文件時,是否可以共享文件爲public
。
我正在致力於Google drive application
這將允許用戶創建必須公開的文件。是否可以通過Google Drive API公開共享文件
我可以看到一些例子,我們可以通過API在Google驅動器中創建一個文件。
但是, 在創建文件時,是否可以共享文件爲public
。
您可以使用Permissions訂閱源設置文件的訪問控制列表。該文件位於:
https://developers.google.com/drive/v2/reference/permissions
爲了使文件公開你需要將角色reader
分配給類型anyone
然後,如果你想有一個鏈接分享給別人,你可以抓住API中File元數據返回的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;
};
使用權限使文件公開時,還需要將文檔中描述的「值」設置爲「實體的電子郵件地址或域名」。當您希望使用'webContentLink'公開文件並且您不想要求用戶登錄到Google Drive時,應該'有什麼價值'? – user1501783 2012-07-31 20:49:30
該值可以是一個空字符串:'' – Nivco 2012-08-06 17:58:53
答案是正確的,但是當您抓取共享鏈接時,最好使用類似「https://drive.google.com/open?id={您的ID」的方式。這是因爲如果共享項目是一個目錄,則「WebContentLink」將爲空。 Morover,'WebContentLink'給出了一個直接的下載鏈接,對此,沒有在線預覽可用。 – 2016-12-29 13:44:45