2012-07-26 2 views

答えて

19

Permissionsフィードを使用してファイルのアクセス制御リストを設定できます。ドキュメントは次の場所にあります。

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

を使用すると、入力しanyone

に役割readerを割り当てる必要がありますファイルを公開するには、リンクが人々に共有したい場合は、することができますAPIのファイルメタデータに返されたwebContentLink URLを取得すれば、どのユーザーもファイルをダウンロードできるようになります。共有ファイルをHTMLに埋め込むこともできます(例えば、<img>タグの画像)。

+1

権限を使用してファイルをパブリックにするときは、ドキュメントに「エンティティの電子メールアドレスまたはドメイン名」と記載されている 'value'も設定する必要があります。 '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; 

}

関連する問題