Google Drive API를 통해 파일을 공개적으로 공유할 수 있나요?

StackOverflow https://stackoverflow.com//questions/11665215

  •  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;
.

};

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top