Google Drive API를 통해 파일을 공개적으로 공유할 수 있나요?
-
11-12-2019 - |
문제
나는 일하고 있다 Google drive application
이를 통해 사용자는 공개되어야 하는 파일을 생성할 수 있습니다.
API를 통해 Google 드라이브에 파일을 생성할 수 있는 몇 가지 예를 볼 수 있었습니다.
그러나 파일을 작성하는 동안 파일을 다음과 같이 공유 할 수 있습니다. public
.
해결책
권한 피드를 사용하여 파일의 액세스 제어 목록을 설정할 수 있습니다.설명서는 다음 위치에 있습니다.
https://developers.google.com/drive/v2/reference/permissions
파일을 공개하려면 역할을 할당해야 합니다. reader
유형에 anyone
그런 다음 사람들과 공유할 링크를 원하는 경우 webContentLink
API의 파일 메타데이터에 반환된 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