2012-07-26 4 views

답변

19

권한 피드를 사용하여 파일의 액세스 제어 목록을 설정할 수 있습니다. 문서는 여기에 있습니다 :

https://developers.google.com/drive/v2/reference/permissions

파일 공개 당신이 사람들에게 공유 할 수있는 링크를 원하는 경우, anyone

그런 유형에 역할 reader을 할당해야합니다하려면, 당신은 할 수 있습니다 API의 File 메타 데이터에 반환 된 webContentLink URL을 가져 오면 모든 사용자가 파일을 다운로드 할 수 있습니다. 이 파일을 사용하여 공유 파일을 HTML에 포함 할 수도 있습니다 (예 : <img> 태그의 이미지).

+1

권한을 사용하여 파일을 공개하는 경우 문서에서 "엔터티의 전자 메일 주소 또는 도메인 이름"으로 설명 된 '값'도 설정해야합니다. 'webContentLink'를 사용하여 파일을 공개적으로 사용할 수 있고 사용자가 Google 드라이브에 로그인하지 않도록하려면 '가치'가되어야합니다. – user1501783

+1

값은 빈 문자열 일 수 있습니다. ' – Nivco

+0

답변은 맞지만 공유 링크를 가져올 때'https://drive.google.com/open?id={your ID} '와 같은 것을 사용하는 것이 좋습니다. 이는 공유 항목이 디렉토리 인 경우 'WebContentLink'가 비어 있기 때문입니다. Morover, 'WebContentLink'는 온라인 미리보기를 사용할 수없는 직접 다운로드 링크를 제공합니다. –

3

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; 

}};

관련 문제