Google drive application
으로 작업 중이므로 공개해야하는 파일을 만들 수 있습니다.Google 드라이브 API를 통해 공개적으로 파일을 공유 할 수 있습니까?
Google 드라이브에서 API를 통해 파일을 만들 수있는 몇 가지 예를 볼 수 있습니다.
그러나 파일을 만드는 동안 파일을 public
으로 공유 할 수 있습니까?
Google drive application
으로 작업 중이므로 공개해야하는 파일을 만들 수 있습니다.Google 드라이브 API를 통해 공개적으로 파일을 공유 할 수 있습니까?
Google 드라이브에서 API를 통해 파일을 만들 수있는 몇 가지 예를 볼 수 있습니다.
그러나 파일을 만드는 동안 파일을 public
으로 공유 할 수 있습니까?
권한 피드를 사용하여 파일의 액세스 제어 목록을 설정할 수 있습니다. 문서는 여기에 있습니다 :
https://developers.google.com/drive/v2/reference/permissions
파일 공개 당신이 사람들에게 공유 할 수있는 링크를 원하는 경우, anyone
그런 유형에 역할 reader
을 할당해야합니다하려면, 당신은 할 수 있습니다 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 드라이브에 로그인하지 않도록하려면 '가치'가되어야합니다. – user1501783
값은 빈 문자열 일 수 있습니다. ' – Nivco
답변은 맞지만 공유 링크를 가져올 때'https://drive.google.com/open?id={your ID} '와 같은 것을 사용하는 것이 좋습니다. 이는 공유 항목이 디렉토리 인 경우 'WebContentLink'가 비어 있기 때문입니다. Morover, 'WebContentLink'는 온라인 미리보기를 사용할 수없는 직접 다운로드 링크를 제공합니다. –