هل من الممكن مشاركة ملف بشكل عام من خلال Google Drive API

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

  •  11-12-2019
  •  | 
  •  

سؤال

اعمل على ذلك Google drive application والذي سيسمح للمستخدم بإنشاء ملف يجب أن يكون عامًا.

يمكنني رؤية بعض الأمثلة حيث يمكننا إنشاء ملف في Google Drive من خلال واجهات برمجة التطبيقات.

ولكن ، أثناء إنشاء ملف ، هل من الممكن مشاركة ملف كما public.

هل كانت مفيدة؟

المحلول

يمكنك تعيين قائمة التحكم في الوصول للملف باستخدام موجز الأذونات.الوثائق موجودة هنا:

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

لجعل الملف عامًا، ستحتاج إلى تعيين الدور reader إلى النوع anyone

وبعد ذلك، إذا كنت تريد مشاركة الرابط مع الأشخاص، فيمكنك الحصول على webContentLink تم إرجاع عنوان URL في البيانات الوصفية للملف في واجهة برمجة التطبيقات، وسيسمح لأي مستخدم بتنزيل الملف.يمكنك أيضًا استخدامه لتضمين الملف المشترك في HTML (على سبيل المثال الصور بتنسيق <img> العلامات).

نصائح أخرى

أعتقد أنه سيكون من الجيد عرض مثال الكود بناءً على الإجابة التي قدمتها Nivco.باستخدام جافا سكريبت يمكنك القيام بذلك على النحو التالي:

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