ফাইল, ফোল্ডার এবং ড্রাইভ শেয়ার করুন

প্রতিটি গুগল ড্রাইভ ফাইল, ফোল্ডার এবং শেয়ার্ড ড্রাইভে সংশ্লিষ্ট permissions সংস্থান থাকে। প্রতিটি সংস্থান একটি নির্দিষ্ট type ( user , group , domain , anyone ) এবং role ( owner , organizer , fileOrganizer , writer , commenter , reader ) জন্য অনুমতি সনাক্ত করে। উদাহরণস্বরূপ, একটি ফাইলের একটি নির্দিষ্ট ব্যবহারকারী ( type=user ) কে কেবল পঠনযোগ্য অ্যাক্সেস ( role=reader ) দেওয়ার অনুমতি থাকতে পারে, অন্যদিকে অন্য একটি অনুমতি একটি নির্দিষ্ট গ্রুপ ( type=group ) এর সদস্যদের একটি ফাইলে ( role=commenter ) মন্তব্য যুক্ত করার ক্ষমতা দেয়।

ভূমিকার সম্পূর্ণ তালিকা এবং প্রতিটি দ্বারা অনুমোদিত ক্রিয়াকলাপের জন্য, ভূমিকা এবং অনুমতি দেখুন।

অনুমতিগুলি কীভাবে কাজ করে

একটি ফোল্ডারের অনুমতি তালিকা নিচের দিকে প্রবাহিত হয়। সমস্ত চাইল্ড ফাইল এবং ফোল্ডারগুলি পিতামাতার কাছ থেকে অনুমতি উত্তরাধিকার সূত্রে পায়। যখনই অনুমতি বা অনুক্রম পরিবর্তন করা হয়, তখন সমস্ত নেস্টেড ফোল্ডারগুলির মাধ্যমে প্রচার পুনরাবৃত্তিমূলকভাবে ঘটে। উদাহরণস্বরূপ, যদি একটি ফাইল একটি ফোল্ডারে থাকে এবং সেই ফোল্ডারটি অন্য একটি ফোল্ডারের মধ্যে স্থানান্তরিত হয়, তাহলে নতুন ফোল্ডারের অনুমতিগুলি ফাইলটিতে প্রবাহিত হয়। যদি নতুন ফোল্ডারটি ফাইল ব্যবহারকারীকে "লেখক" এর মতো একটি নতুন ভূমিকা প্রদান করে, তবে এটি তাদের পুরানো ভূমিকাকে ওভাররাইড করে।

বিপরীতভাবে, যদি একটি ফাইল role=writer একটি ফোল্ডার থেকে উত্তরাধিকারসূত্রে পায় এবং অন্য একটি ফোল্ডারে স্থানান্তরিত হয় যেখানে একটি "রিডার" ভূমিকা থাকে, তাহলে ফাইলটি এখন role=reader উত্তরাধিকারসূত্রে পাবে।

শেয়ার্ড ড্রাইভের কোনও ফাইল বা ফোল্ডার থেকে উত্তরাধিকারসূত্রে প্রাপ্ত অনুমতিগুলি সরানো যাবে না। পরিবর্তে, এই অনুমতিগুলি প্রত্যক্ষ বা পরোক্ষ পিতামাতার সাথে সামঞ্জস্য করতে হবে যেখান থেকে এগুলি উত্তরাধিকারসূত্রে এসেছে। "আমার ড্রাইভ" বা "আমার সাথে ভাগ করা হয়েছে" এর অধীনে থাকা আইটেমগুলি থেকে উত্তরাধিকারসূত্রে প্রাপ্ত অনুমতিগুলি সরানো যেতে পারে।

বিপরীতভাবে, আমার ড্রাইভের কোনও ফাইল বা ফোল্ডারে উত্তরাধিকারসূত্রে প্রাপ্ত অনুমতিগুলি ওভাররাইড করা যেতে পারে। সুতরাং, যদি কোনও ফাইল আমার ড্রাইভ ফোল্ডার থেকে role=writer উত্তরাধিকারসূত্রে পায়, তাহলে আপনি ফাইলটির অনুমতি স্তর কমাতে role=reader সেট করতে পারেন।

একই ফাইলে একযোগে অনুমতির ক্রিয়াকলাপ সমর্থিত নয়। শুধুমাত্র শেষ আপডেটটি প্রয়োগ করা হয়।

ফাইলের ক্ষমতা বুঝুন

permissions সংস্থানটি চূড়ান্তভাবে বর্তমান ব্যবহারকারীর কোনও ফাইল বা ফোল্ডারে ক্রিয়া সম্পাদনের ক্ষমতা নির্ধারণ করে না। পরিবর্তে, files সংস্থানটিতে বুলিয়ান capabilities ক্ষেত্রগুলির একটি সংগ্রহ রয়েছে যা কোনও ফাইল বা ফোল্ডারে কোনও ক্রিয়া সম্পাদন করা যেতে পারে কিনা তা নির্দেশ করতে ব্যবহৃত হয়। Google ড্রাইভ API ফাইল বা ফোল্ডারের সাথে সম্পর্কিত বর্তমান ব্যবহারকারীর permissions সংস্থানের উপর ভিত্তি করে এই ক্ষেত্রগুলি সেট করে।

উদাহরণস্বরূপ, যখন অ্যালেক্স আপনার অ্যাপে লগ ইন করে একটি ফাইল শেয়ার করার চেষ্টা করে, তখন অ্যালেক্সের ভূমিকা ফাইলটিতে অনুমতির জন্য পরীক্ষা করা হয়। যদি ভূমিকাটি তাদের একটি ফাইল শেয়ার করার অনুমতি দেয়, তাহলে ফাইলের সাথে সম্পর্কিত capabilities , যেমন canShare , ভূমিকার সাথে সম্পর্কিত সেট করা হয়। যদি অ্যালেক্স ফাইলটি শেয়ার করতে চায়, তাহলে আপনার অ্যাপটি canShare কে true এ সেট করা আছে কিনা তা নিশ্চিত করার জন্য capabilities পরীক্ষা করে।

ফাইলের ক্ষমতা পান

যখন আপনার অ্যাপটি একটি ফাইল খোলে, তখন এটি ফাইলের ক্ষমতা পরীক্ষা করে এবং বর্তমান ব্যবহারকারীর অনুমতি প্রতিফলিত করার জন্য UI রেন্ডার করে। উদাহরণস্বরূপ, যদি ব্যবহারকারীর ফাইলটিতে canComment ক্ষমতা না থাকে, তাহলে UI তে মন্তব্য করার ক্ষমতা অক্ষম করা উচিত।

ক্ষমতা পরীক্ষা করার জন্য, fileId পাথ প্যারামিটার এবং capabilities ফিল্ডে সেট করা fields প্যারামিটার সহ files রিসোর্সে get পদ্ধতিটি কল করুন। fields প্যারামিটার ব্যবহার করে ক্ষেত্রগুলি ফেরত দেওয়ার বিষয়ে আরও তথ্যের জন্য, নির্দিষ্ট ক্ষেত্রগুলি ফেরত দিন দেখুন।

নিম্নলিখিত কোড নমুনাটি ব্যবহারকারীর অনুমতি যাচাই করার পদ্ধতি দেখায়। প্রতিক্রিয়াটি ফাইলে ব্যবহারকারীর ক্ষমতার একটি তালিকা প্রদান করে। প্রতিটি ক্ষমতা একটি সূক্ষ্ম পদক্ষেপের সাথে সঙ্গতিপূর্ণ যা একজন ব্যবহারকারী নিতে পারেন। কিছু ক্ষেত্র শুধুমাত্র শেয়ার্ড ড্রাইভের আইটেমগুলির জন্য পূরণ করা হয়।

অনুরোধ

GET https://www.googleapis.com/drive/v3/files/FILE_ID?fields=capabilities

প্রতিক্রিয়া

{
  "capabilities": {
    "canAcceptOwnership": false,
    "canAddChildren": false,
    "canAddMyDriveParent": false,
    "canChangeCopyRequiresWriterPermission": true,
    "canChangeItemDownloadRestriction": true,
    "canChangeSecurityUpdateEnabled": false,
    "canChangeViewersCanCopyContent": true,
    "canComment": true,
    "canCopy": true,
    "canDelete": true,
    "canDisableInheritedPermissions": false,
    "canDownload": true,
    "canEdit": true,
    "canEnableInheritedPermissions": true,
    "canListChildren": false,
    "canModifyContent": true,
    "canModifyContentRestriction": true,
    "canModifyEditorContentRestriction": true,
    "canModifyOwnerContentRestriction": true,
    "canModifyLabels": true,
    "canMoveChildrenWithinDrive": false,
    "canMoveItemIntoTeamDrive": true,
    "canMoveItemOutOfDrive": true,
    "canMoveItemWithinDrive": true,
    "canReadLabels": true,
    "canReadRevisions": true,
    "canRemoveChildren": false,
    "canRemoveContentRestriction": false,
    "canRemoveMyDriveParent": true,
    "canRename": true,
    "canShare": true,
    "canTrash": true,
    "canUntrash": true
  }
}

ড্রাইভ রিসোর্স শেয়ার করার জন্য পরিস্থিতি

পাঁচটি ভিন্ন ধরণের শেয়ারিং পরিস্থিতি রয়েছে:

  1. আমার ড্রাইভে একটি ফাইল শেয়ার করার জন্য, ব্যবহারকারীর অবশ্যই role=writer অথবা role=owner থাকতে হবে।

  2. আমার ড্রাইভে একটি ফোল্ডার শেয়ার করার জন্য, ব্যবহারকারীর অবশ্যই role=writer অথবা role=owner থাকতে হবে।

  3. শেয়ার্ড ড্রাইভে ফাইল শেয়ার করার জন্য, ব্যবহারকারীর অবশ্যই role=writer , role=fileOrganizer , অথবা role=organizer থাকতে হবে।

    • writersCanShare সেটিংটি শেয়ার্ড ড্রাইভের আইটেমগুলিতে প্রযোজ্য নয়। এটিকে সর্বদা true তে সেট করা থাকে বলে বিবেচনা করা হয়।
  4. শেয়ার্ড ড্রাইভে একটি ফোল্ডার শেয়ার করতে, ব্যবহারকারীর role=organizer থাকতে হবে।

    • যদি কোনও শেয়ার্ড ড্রাইভে sharingFoldersRequiresOrganizerPermission সীমাবদ্ধতা false তে সেট করা থাকে, তাহলে role=fileOrganizer ব্যবহারকারীরা সেই শেয়ার্ড ড্রাইভে ফোল্ডার শেয়ার করতে পারবেন।
  5. শেয়ার্ড ড্রাইভের সদস্যপদ পরিচালনা করতে, ব্যবহারকারীর role=organizer থাকতে হবে। শুধুমাত্র ব্যবহারকারী এবং গোষ্ঠী শেয়ার্ড ড্রাইভের সদস্য হতে পারবেন।

ক্ষেত্র প্যারামিটার ব্যবহার করুন

যদি আপনি প্রতিক্রিয়ায় ফেরত দেওয়ার জন্য ক্ষেত্রগুলি নির্দিষ্ট করতে চান, তাহলে আপনি permissions সংস্থানের যেকোনো পদ্ধতির সাথে fields সিস্টেম প্যারামিটার সেট করতে পারেন। যদি আপনি fields প্যারামিটারটি বাদ দেন, তাহলে সার্ভার পদ্ধতির জন্য নির্দিষ্ট ক্ষেত্রগুলির একটি ডিফল্ট সেট ফেরত পাঠাবে। উদাহরণস্বরূপ, list পদ্ধতি প্রতিটি ফাইলের জন্য শুধুমাত্র id , type , kind এবং role ক্ষেত্রগুলি ফেরত পাঠায়। বিভিন্ন ক্ষেত্র ফেরত দিতে, নির্দিষ্ট ক্ষেত্রগুলি ফেরত দিন দেখুন।

একটি অনুমতি তৈরি করুন

অনুমতি তৈরি করার সময় নিম্নলিখিত দুটি ক্ষেত্র প্রয়োজন:

  • type : এই type অনুমতির সুযোগ ( user , group , domain , অথবা anyone ) চিহ্নিত করে। type=user সহ একটি অনুমতি একটি নির্দিষ্ট ব্যবহারকারীর জন্য প্রযোজ্য যেখানে type=domain সহ একটি অনুমতি একটি নির্দিষ্ট ডোমেনের সকলের জন্য প্রযোজ্য।

  • role : role ক্ষেত্রটি সেই ধরণের ক্রিয়াকলাপগুলি সনাক্ত করে যা type সম্পাদন করতে পারে। উদাহরণস্বরূপ, type=user এবং role=reader সহ একটি অনুমতি একটি নির্দিষ্ট ব্যবহারকারীকে ফাইল বা ফোল্ডারে কেবল পঠনযোগ্য অ্যাক্সেস দেয়। অথবা, type=domain এবং role=commenter সহ একটি অনুমতি ডোমেনের প্রত্যেককে একটি ফাইলে মন্তব্য যুক্ত করতে দেয়। ভূমিকাগুলির সম্পূর্ণ তালিকা এবং প্রতিটি দ্বারা অনুমোদিত ক্রিয়াকলাপগুলির জন্য, Roles and permissions দেখুন।

যখন আপনি type=user অথবা type=group এর মাধ্যমে একটি অনুমতি তৈরি করেন, তখন আপনাকে নির্দিষ্ট ব্যবহারকারী বা গোষ্ঠীকে অনুমতির সাথে সংযুক্ত করার জন্য একটি emailAddress ও প্রদান করতে হবে।

যখন আপনি type=domain মাধ্যমে একটি অনুমতি তৈরি করেন, তখন আপনাকে একটি নির্দিষ্ট ডোমেনকে অনুমতির সাথে সংযুক্ত করার জন্য একটি domain প্রদান করতে হবে।

একটি অনুমতি তৈরি করতে:

  1. সংশ্লিষ্ট ফাইল বা ফোল্ডারের জন্য fileId পাথ প্যারামিটার সহ permissions সংস্থানে create পদ্ধতিটি ব্যবহার করুন।
  2. অনুরোধের বডিতে, type এবং role উল্লেখ করুন।
  3. যদি type=user অথবা type=group , তাহলে একটি emailAddress প্রদান করুন। যদি type=domain , তাহলে একটি domain প্রদান করুন।

নিম্নলিখিত কোড নমুনাটি দেখায় কিভাবে একটি অনুমতি তৈরি করতে হয়। প্রতিক্রিয়াটি একটি permissions সংস্থানের একটি উদাহরণ প্রদান করে, যার মধ্যে নির্ধারিত permissionId অন্তর্ভুক্ত।

অনুরোধ

POST https://www.googleapis.com/drive/v3/files/FILE_ID/permissions
{
  "requests": [
    {
        "type": "user",
        "role": "commenter",
        "emailAddress": "alex@altostrat.com"
    }
  ]
}

প্রতিক্রিয়া

{
    "kind": "drive#permission",
    "id": "PERMISSION_ID",
    "type": "user",
    "role": "commenter"
}

লক্ষ্য দর্শকদের ব্যবহার করুন

টার্গেট অডিয়েন্স হলো এমন কিছু লোকের দল—যেমন বিভাগ বা দল—যাদের সাথে আপনি ব্যবহারকারীদের তাদের আইটেম শেয়ার করার জন্য সুপারিশ করতে পারেন। আপনি ব্যবহারকারীদের আপনার পুরো প্রতিষ্ঠানের পরিবর্তে আরও নির্দিষ্ট বা সীমিত দর্শকদের সাথে আইটেম শেয়ার করতে উৎসাহিত করতে পারেন। টার্গেট অডিয়েন্স আপনার ডেটার নিরাপত্তা এবং গোপনীয়তা উন্নত করতে এবং ব্যবহারকারীদের জন্য যথাযথভাবে শেয়ার করা সহজ করতে সাহায্য করতে পারে। আরও তথ্যের জন্য, টার্গেট অডিয়েন্স সম্পর্কে দেখুন।

লক্ষ্য দর্শকদের ব্যবহার করতে:

  1. গুগল অ্যাডমিন কনসোলে, মেনু > ডিরেক্টরি > টার্গেট অডিয়েন্স এ যান।

    লক্ষ্য দর্শকদের কাছে যান

    এই কাজের জন্য আপনাকে সুপার অ্যাডমিনিস্ট্রেটর সুবিধা সহ একটি অ্যাকাউন্ট ব্যবহার করে সাইন ইন করতে হবে।

  2. টার্গেট অডিয়েন্স তালিকায় , টার্গেট অডিয়েন্সের নামে ক্লিক করুন। টার্গেট অডিয়েন্স তৈরি করতে, টার্গেট অডিয়েন্স তৈরি করুন দেখুন।

  3. টার্গেট অডিয়েন্স URL থেকে ইউনিক আইডি কপি করুন: https://admin.google.com/ac/targetaudiences/ ID

  4. type=domain দিয়ে একটি অনুমতি তৈরি করুন এবং domain ক্ষেত্রটি ID .audience.googledomains.com এ সেট করুন।

ব্যবহারকারীরা লক্ষ্য দর্শকদের সাথে কীভাবে ইন্টারঅ্যাক্ট করে তা দেখতে, লিঙ্ক শেয়ারিংয়ের জন্য ব্যবহারকারীর অভিজ্ঞতা দেখুন।

অনুমতি নিন।

অনুমতি পেতে, fileId এবং permissionId পাথ প্যারামিটার সহ permissions রিসোর্সে get পদ্ধতি ব্যবহার করুন। যদি আপনি অনুমতি আইডি না জানেন, তাহলে আপনি list পদ্ধতি ব্যবহার করে সমস্ত অনুমতি তালিকাভুক্ত করতে পারেন।

নিম্নলিখিত কোড নমুনাটি দেখায় কিভাবে ID দ্বারা অনুমতি পেতে হয়। প্রতিক্রিয়াটি একটি permissions সংস্থানের একটি উদাহরণ প্রদান করে।

অনুরোধ

GET https://www.googleapis.com/drive/v3/files/FILE_ID/permissionsPERMISSION_ID

প্রতিক্রিয়া

{
  "kind": "drive#permissionList",
  "permissions": [
    {
      "kind": "drive#permission",
      "id": "PERMISSION_ID",
      "type": "user",
      "role": "commenter"
    }
  ]
}

সমস্ত অনুমতি তালিকাভুক্ত করুন

কোনও ফাইল, ফোল্ডার বা শেয়ার্ড ড্রাইভের জন্য অনুমতি তালিকাভুক্ত করতে, fileId পাথ প্যারামিটার সহ permissions সংস্থানে list পদ্ধতিটি ব্যবহার করুন।

অনুমতিগুলির পৃষ্ঠাঙ্কন কাস্টমাইজ করতে বা ফিল্টার করতে নিম্নলিখিত কোয়েরি প্যারামিটারগুলি পাস করুন:

  • pageSize : প্রতি পৃষ্ঠায় সর্বোচ্চ কতবার অনুমতি দেওয়া যাবে। যদি শেয়ার্ড ড্রাইভের ফাইলের জন্য সেট না করা থাকে, তাহলে সর্বাধিক ১০০টি ফলাফল দেখানো হবে। যদি শেয়ার্ড ড্রাইভের নয় এমন ফাইলের জন্য সেট না করা থাকে, তাহলে সম্পূর্ণ তালিকা দেখানো হবে।

  • pageToken : পূর্ববর্তী তালিকা কল থেকে প্রাপ্ত একটি পৃষ্ঠা টোকেন। পরবর্তী পৃষ্ঠাটি পুনরুদ্ধার করতে এই টোকেনটি প্রদান করুন।

  • supportsAllDrives : অনুরোধকারী অ্যাপটি My Drives এবং shared drive উভয়কেই সমর্থন করে কিনা।

  • useDomainAdminAccess : ডোমেন অ্যাডমিনিস্ট্রেটর হিসেবে অনুরোধটি ইস্যু করার জন্য true তে সেট করুন। যদি fileId প্যারামিটারটি একটি শেয়ার্ড ড্রাইভকে বোঝায় এবং অনুরোধকারী সেই ডোমেনের প্রশাসক হন যার সাথে শেয়ার্ড ড্রাইভটি জড়িত। আরও তথ্যের জন্য, ডোমেন অ্যাডমিনিস্ট্রেটর হিসেবে শেয়ার্ড ড্রাইভ পরিচালনা করুন দেখুন।

  • includePermissionsForView : প্রতিক্রিয়াতে অন্তর্ভুক্ত করার জন্য অতিরিক্ত ভিউয়ের অনুমতি। শুধুমাত্র published সমর্থিত।

নিম্নলিখিত কোড নমুনাটি দেখায় কিভাবে সমস্ত অনুমতি পেতে হয়। প্রতিক্রিয়াটি একটি ফাইল, ফোল্ডার, বা শেয়ার্ড ড্রাইভের জন্য অনুমতিগুলির একটি তালিকা প্রদান করে।

অনুরোধ

GET https://www.googleapis.com/drive/v3/files/FILE_ID/permissions

প্রতিক্রিয়া

{
  "kind": "drive#permissionList",
  "permissions": [
    {
      "id": "PERMISSION_ID",
      "type": "user",
      "kind": "drive#permission",
      "role": "commenter"
    }
  ]
}

অনুমতি আপডেট করুন

কোনও ফাইল বা ফোল্ডারের অনুমতি আপডেট করতে, আপনি নির্ধারিত ভূমিকা পরিবর্তন করতে পারেন। ভূমিকা উৎস খুঁজে বের করার বিষয়ে আরও তথ্যের জন্য, ভূমিকা উৎস নির্ধারণ করুন দেখুন।

  1. সংযুক্ত ফাইল, ফোল্ডার, অথবা শেয়ার্ড ড্রাইভে সেট করা fileId পাথ প্যারামিটার এবং পরিবর্তনের অনুমতিতে সেট করা permissionId পাথ প্যারামিটার ব্যবহার করে permissions রিসোর্সে update পদ্ধতিটি কল করুন। permissionId খুঁজে পেতে, fileId পাথ প্যারামিটার সহ permissions রিসোর্সে list পদ্ধতিটি ব্যবহার করুন।

  2. অনুরোধে, নতুন role চিহ্নিত করুন।

আপনি একটি শেয়ার্ড ড্রাইভের পৃথক ফাইল বা ফোল্ডারে অনুমতি দিতে পারেন, এমনকি যদি ব্যবহারকারী বা গোষ্ঠী ইতিমধ্যেই সদস্য থাকে। উদাহরণস্বরূপ, Alex-এর একটি শেয়ার্ড ড্রাইভের সদস্যপদে role=commenter আছে। তবে, আপনার অ্যাপটি একটি শেয়ার্ড ড্রাইভের একটি ফাইলের জন্য Alex role=writer প্রদান করতে পারে। এই ক্ষেত্রে, যেহেতু নতুন ভূমিকাটি তাদের সদস্যতার মাধ্যমে প্রদত্ত ভূমিকার চেয়ে বেশি অনুমতিমূলক, তাই নতুন অনুমতিটি ফাইল বা ফোল্ডারের জন্য কার্যকর ভূমিকা হয়ে ওঠে।

আপনি প্যাচ সেমান্টিক্সের মাধ্যমে আপডেট প্রয়োগ করতে পারেন, অর্থাৎ আপনি কোনও রিসোর্সে আংশিক পরিবর্তন করতে পারেন। আপনার অনুরোধে আপনি যে ক্ষেত্রগুলি পরিবর্তন করতে চান তা স্পষ্টভাবে সেট করতে হবে। অনুরোধে অন্তর্ভুক্ত না থাকা যেকোনো ক্ষেত্র তাদের বিদ্যমান মান ধরে রাখবে। আরও তথ্যের জন্য, আংশিক রিসোর্স নিয়ে কাজ করা দেখুন।

নিচের কোড নমুনাটি দেখায় কিভাবে একটি ফাইল বা ফোল্ডারের অনুমতিগুলি commenter থেকে writer পরিবর্তন করতে হয়। প্রতিক্রিয়াটি একটি permissions সংস্থানের একটি উদাহরণ প্রদান করে।

অনুরোধ

PATCH https://www.googleapis.com/drive/v3/files/FILE_ID/permissions/PERMISSION_ID
{
  "requests": [
    {
        "role": "writer"
    }
  ]
}

প্রতিক্রিয়া

{
  "kind": "drive#permission",
  "id": "PERMISSION_ID",
  "type": "user",
  "role": "writer"
}

ভূমিকার উৎস নির্ধারণ করুন

কোনও ফাইল বা ফোল্ডারের ভূমিকা পরিবর্তন করতে হলে, আপনাকে ভূমিকার উৎস জানতে হবে। শেয়ার্ড ড্রাইভের ক্ষেত্রে, কোনও ভূমিকার উৎস শেয়ার্ড ড্রাইভের সদস্যপদ, ফোল্ডারের ভূমিকা বা ফাইলের ভূমিকার উপর ভিত্তি করে নির্ধারণ করা যেতে পারে।

একটি শেয়ার্ড ড্রাইভের জন্য অথবা সেই ড্রাইভের মধ্যে থাকা আইটেমগুলির জন্য ভূমিকা উৎস নির্ধারণ করতে, fileId এবং permissionId পাথ প্যারামিটার সহ permissions সম্পদে get পদ্ধতিটি কল করুন, এবং fields প্যারামিটারটি permissionDetails ফিল্ডে সেট করুন।

permissionId খুঁজে পেতে, fileId পাথ প্যারামিটার সহ permissions রিসোর্সে list পদ্ধতিটি ব্যবহার করুন। list অনুরোধে permissionDetails ক্ষেত্রটি আনতে, fields প্যারামিটারটিকে permissions/permissionDetails এ সেট করুন।

এই ক্ষেত্রটি ব্যবহারকারী, গোষ্ঠী বা ডোমেনের জন্য সমস্ত উত্তরাধিকারসূত্রে প্রাপ্ত এবং সরাসরি ফাইল অনুমতিগুলির তালিকা করে।

নিম্নলিখিত কোড নমুনাটি দেখায় কিভাবে ভূমিকা উৎস নির্ধারণ করতে হয়। প্রতিক্রিয়াটি একটি permissions সম্পদের permissionDetails ফেরত দেয়। inheritedFrom ক্ষেত্রটি সেই আইটেমের ID প্রদান করে যেখান থেকে অনুমতিটি উত্তরাধিকারসূত্রে পাওয়া যায়।

অনুরোধ

GET https://www.googleapis.com/drive/v3/files/FILE_ID/permissions/PERMISSION_ID?fields=permissionDetails&supportsAllDrives=true

প্রতিক্রিয়া

{
  "permissionDetails": [
    {
      "permissionType": "member",
      "role": "commenter",
      "inheritedFrom": "INHERITED_FROM_ID",
      "inherited": true
    },
    {
      "permissionType": "file",
      "role": "writer",
      "inherited": false
    }
  ]
}

ব্যাচ অনুরোধের মাধ্যমে একাধিক অনুমতি আপডেট করুন

আমরা একাধিক অনুমতি পরিবর্তন করার জন্য ব্যাচ অনুরোধ ব্যবহার করার দৃঢ় পরামর্শ দিচ্ছি।

ক্লায়েন্ট লাইব্রেরির সাহায্যে ব্যাচ অনুমতি পরিবর্তন করার একটি উদাহরণ নিচে দেওয়া হল।

জাভা

ড্রাইভ/স্নিপেটস/ড্রাইভ_ভি৩/এসআরসি/মেইন/জাভা/শেয়ারফাইল.জাভা
import com.google.api.client.googleapis.batch.BatchRequest;
import com.google.api.client.googleapis.batch.json.JsonBatchCallback;
import com.google.api.client.googleapis.json.GoogleJsonError;
import com.google.api.client.googleapis.json.GoogleJsonResponseException;
import com.google.api.client.http.HttpHeaders;
import com.google.api.client.http.HttpRequestInitializer;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.gson.GsonFactory;
import com.google.api.services.drive.Drive;
import com.google.api.services.drive.DriveScopes;
import com.google.api.services.drive.model.Permission;
import com.google.auth.http.HttpCredentialsAdapter;
import com.google.auth.oauth2.GoogleCredentials;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/* Class to demonstrate use-case of modify permissions. */
public class ShareFile {

  /**
   * Batch permission modification.
   * realFileId file Id.
   * realUser User Id.
   * realDomain Domain of the user ID.
   *
   * @return list of modified permissions if successful, {@code null} otherwise.
   * @throws IOException if service account credentials file not found.
   */
  public static List<String> shareFile(String realFileId, String realUser, String realDomain)
      throws IOException {
        /* Load pre-authorized user credentials from the environment.
         TODO(developer) - See https://developers.google.com/identity for
         guides on implementing OAuth2 for your application.application*/
    GoogleCredentials credentials = GoogleCredentials.getApplicationDefault()
        .createScoped(Arrays.asList(DriveScopes.DRIVE_FILE));
    HttpRequestInitializer requestInitializer = new HttpCredentialsAdapter(
        credentials);

    // Build a new authorized API client service.
    Drive service = new Drive.Builder(new NetHttpTransport(),
        GsonFactory.getDefaultInstance(),
        requestInitializer)
        .setApplicationName("Drive samples")
        .build();

    final List<String> ids = new ArrayList<String>();


    JsonBatchCallback<Permission> callback = new JsonBatchCallback<Permission>() {
      @Override
      public void onFailure(GoogleJsonError e,
                            HttpHeaders responseHeaders)
          throws IOException {
        // Handle error
        System.err.println(e.getMessage());
      }

      @Override
      public void onSuccess(Permission permission,
                            HttpHeaders responseHeaders)
          throws IOException {
        System.out.println("Permission ID: " + permission.getId());

        ids.add(permission.getId());

      }
    };
    BatchRequest batch = service.batch();
    Permission userPermission = new Permission()
        .setType("user")
        .setRole("writer");

    userPermission.setEmailAddress(realUser);
    try {
      service.permissions().create(realFileId, userPermission)
          .setFields("id")
          .queue(batch, callback);

      Permission domainPermission = new Permission()
          .setType("domain")
          .setRole("reader");

      domainPermission.setDomain(realDomain);

      service.permissions().create(realFileId, domainPermission)
          .setFields("id")
          .queue(batch, callback);

      batch.execute();

      return ids;
    } catch (GoogleJsonResponseException e) {
      // TODO(developer) - handle error appropriately
      System.err.println("Unable to modify permission: " + e.getDetails());
      throw e;
    }
  }
}

পাইথন

ড্রাইভ/স্নিপেটস/ড্রাইভ-ভি৩/ফাইল_স্নিপেট/শেয়ার_ফাইল.পি
import google.auth
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError


def share_file(real_file_id, real_user, real_domain):
  """Batch permission modification.
  Args:
      real_file_id: file Id
      real_user: User ID
      real_domain: Domain of the user ID
  Prints modified permissions

  Load pre-authorized user credentials from the environment.
  TODO(developer) - See https://developers.google.com/identity
  for guides on implementing OAuth2 for the application.
  """
  creds, _ = google.auth.default()

  try:
    # create drive api client
    service = build("drive", "v3", credentials=creds)
    ids = []
    file_id = real_file_id

    def callback(request_id, response, exception):
      if exception:
        # Handle error
        print(exception)
      else:
        print(f"Request_Id: {request_id}")
        print(f'Permission Id: {response.get("id")}')
        ids.append(response.get("id"))

    # pylint: disable=maybe-no-member
    batch = service.new_batch_http_request(callback=callback)
    user_permission = {
        "type": "user",
        "role": "writer",
        "emailAddress": "user@example.com",
    }
    batch.add(
        service.permissions().create(
            fileId=file_id,
            body=user_permission,
            fields="id",
        )
    )
    domain_permission = {
        "type": "domain",
        "role": "reader",
        "domain": "example.com",
    }
    domain_permission["domain"] = real_domain
    batch.add(
        service.permissions().create(
            fileId=file_id,
            body=domain_permission,
            fields="id",
        )
    )
    batch.execute()

  except HttpError as error:
    print(f"An error occurred: {error}")
    ids = None

  return ids


if __name__ == "__main__":
  share_file(
      real_file_id="1dUiRSoAQKkM3a4nTPeNQWgiuau1KdQ_l",
      real_user="gduser1@workspacesamples.dev",
      real_domain="workspacesamples.dev",
  )

নোড.জেএস

ড্রাইভ/স্নিপেটস/ড্রাইভ_ভি৩/ফাইল_স্নিপেটস/শেয়ার_ফাইল.জেএস
import {GoogleAuth} from 'google-auth-library';
import {google} from 'googleapis';

/**
 * Shares a file with a user and a domain.
 * @param {string} fileId The ID of the file to share.
 * @param {string} targetUserEmail The email address of the user to share with.
 * @param {string} targetDomainName The domain to share with.
 * @return {Promise<Array<string>>} A promise that resolves to an array of permission IDs.
 */
async function shareFile(fileId, targetUserEmail, targetDomainName) {
  // Authenticate with Google and get an authorized client.
  // TODO (developer): Use an appropriate auth mechanism for your app.
  const auth = new GoogleAuth({
    scopes: 'https://www.googleapis.com/auth/drive',
  });

  // Create a new Drive API client (v3).
  const service = google.drive({version: 'v3', auth});

  /** @type {Array<string>} */
  const permissionIds = [];

  // The permissions to create.
  const permissions = [
    {
      type: 'user',
      role: 'writer',
      emailAddress: targetUserEmail, // e.g., 'user@partner.com'
    },
    {
      type: 'domain',
      role: 'writer',
      domain: targetDomainName, // e.g., 'example.com'
    },
  ];

  // Iterate through the permissions and create them one by one.
  for (const permission of permissions) {
    const result = await service.permissions.create({
      requestBody: permission,
      fileId,
      fields: 'id',
    });

    if (result.data.id) {
      permissionIds.push(result.data.id);
      console.log(`Inserted permission id: ${result.data.id}`);
    } else {
      throw new Error('Failed to create permission');
    }
  }
  return permissionIds;
}

পিএইচপি

ড্রাইভ/স্নিপেট/ড্রাইভ_ভি৩/এসআরসি/ড্রাইভশেয়ারফাইল.পিএইচপি
<?php
use Google\Client;
use Google\Service\Drive;
function shareFile()
{
    try {
        $client = new Client();
        $client->useApplicationDefaultCredentials();
        $client->addScope(Drive::DRIVE);
        $driveService = new Drive($client);
        $realFileId = readline("Enter File Id: ");
        $realUser = readline("Enter user email address: ");
        $realDomain = readline("Enter domain name: ");
        $ids = array();
            $fileId = '1sTWaJ_j7PkjzaBWtNc3IzovK5hQf21FbOw9yLeeLPNQ';
            $fileId = $realFileId;
            $driveService->getClient()->setUseBatch(true);
            try {
                $batch = $driveService->createBatch();

                $userPermission = new Drive\Permission(array(
                    'type' => 'user',
                    'role' => 'writer',
                    'emailAddress' => 'user@example.com'
                ));
                $userPermission['emailAddress'] = $realUser;
                $request = $driveService->permissions->create(
                    $fileId, $userPermission, array('fields' => 'id'));
                $batch->add($request, 'user');
                $domainPermission = new Drive\Permission(array(
                    'type' => 'domain',
                    'role' => 'reader',
                    'domain' => 'example.com'
                ));
                $userPermission['domain'] = $realDomain;
                $request = $driveService->permissions->create(
                    $fileId, $domainPermission, array('fields' => 'id'));
                $batch->add($request, 'domain');
                $results = $batch->execute();

                foreach ($results as $result) {
                    if ($result instanceof Google_Service_Exception) {
                        // Handle error
                        printf($result);
                    } else {
                        printf("Permission ID: %s\n", $result->id);
                        array_push($ids, $result->id);
                    }
                }
            } finally {
                $driveService->getClient()->setUseBatch(false);
            }
            return $ids;
    } catch(Exception $e) {
        echo "Error Message: ".$e;
    }

}

.নেট

ড্রাইভ/স্নিপেট/ড্রাইভ_ভি৩/ড্রাইভভি৩স্নিপেট/শেয়ারফাইল.সিএস
using Google.Apis.Auth.OAuth2;
using Google.Apis.Drive.v3;
using Google.Apis.Drive.v3.Data;
using Google.Apis.Requests;
using Google.Apis.Services;

namespace DriveV3Snippets
{
    // Class to demonstrate use-case of Drive modify permissions.
    public class ShareFile
    {
        /// <summary>
        /// Batch permission modification.
        /// </summary>
        /// <param name="realFileId">File id.</param>
        /// <param name="realUser">User id.</param>
        /// <param name="realDomain">Domain id.</param>
        /// <returns>list of modified permissions, null otherwise.</returns>
        public static IList<String> DriveShareFile(string realFileId, string realUser, string realDomain)
        {
            try
            {
                /* Load pre-authorized user credentials from the environment.
                 TODO(developer) - See https://developers.google.com/identity for
                 guides on implementing OAuth2 for your application. */
                GoogleCredential credential = GoogleCredential.GetApplicationDefault()
                    .CreateScoped(DriveService.Scope.Drive);

                // Create Drive API service.
                var service = new DriveService(new BaseClientService.Initializer
                {
                    HttpClientInitializer = credential,
                    ApplicationName = "Drive API Snippets"
                });

                var ids = new List<String>();
                var batch = new BatchRequest(service);
                BatchRequest.OnResponse<Permission> callback = delegate(
                    Permission permission,
                    RequestError error,
                    int index,
                    HttpResponseMessage message)
                {
                    if (error != null)
                    {
                        // Handle error
                        Console.WriteLine(error.Message);
                    }
                    else
                    {
                        Console.WriteLine("Permission ID: " + permission.Id);
                    }
                };
                Permission userPermission = new Permission()
                {
                    Type = "user",
                    Role = "writer",
                    EmailAddress = realUser
                };

                var request = service.Permissions.Create(userPermission, realFileId);
                request.Fields = "id";
                batch.Queue(request, callback);

                Permission domainPermission = new Permission()
                {
                    Type = "domain",
                    Role = "reader",
                    Domain = realDomain
                };
                request = service.Permissions.Create(domainPermission, realFileId);
                request.Fields = "id";
                batch.Queue(request, callback);
                var task = batch.ExecuteAsync();
                task.Wait();
                return ids;
            }
            catch (Exception e)
            {
                // TODO(developer) - handle error appropriately
                if (e is AggregateException)
                {
                    Console.WriteLine("Credential Not found");
                }
                else
                {
                    throw;
                }
            }
            return null;
        }
    }
}

একটি অনুমতি মুছুন

কোনও ফাইল বা ফোল্ডারে অ্যাক্সেস প্রত্যাহার করতে, permissions রিসোর্সে fileId এবং অনুমতি মুছে ফেলার জন্য সেট করা permissionId পাথ প্যারামিটার সহ delete পদ্ধতিটি কল করুন।

"আমার ড্রাইভ"-এর আইটেমগুলির জন্য, উত্তরাধিকারসূত্রে প্রাপ্ত অনুমতি মুছে ফেলা সম্ভব। উত্তরাধিকারসূত্রে প্রাপ্ত অনুমতি মুছে ফেলা হলে আইটেম এবং শিশু আইটেমগুলিতে অ্যাক্সেস বাতিল হয়ে যাবে, যদি থাকে।

শেয়ার্ড ড্রাইভের আইটেমগুলির জন্য, উত্তরাধিকারসূত্রে প্রাপ্ত অনুমতিগুলি প্রত্যাহার করা যাবে না। পরিবর্তে মূল ফাইল বা ফোল্ডারে অনুমতিটি আপডেট করুন বা মুছুন।

শেয়ার্ড ড্রাইভ ফাইল বা ফোল্ডারে সরাসরি প্রয়োগ করা অনুমতিগুলি মুছে ফেলার জন্যও delete পদ্ধতি ব্যবহার করা হয়।

নিম্নলিখিত কোড নমুনাটি দেখায় কিভাবে একটি permissionId মুছে ফেলার মাধ্যমে অ্যাক্সেস প্রত্যাহার করতে হয়। সফল হলে, প্রতিক্রিয়ার বডিটি একটি খালি JSON অবজেক্ট হবে। অনুমতিটি সরানো হয়েছে কিনা তা নিশ্চিত করতে, fileId পাথ প্যারামিটার সহ permissions সংস্থানে list পদ্ধতিটি ব্যবহার করুন।

অনুরোধ

DELETE https://www.googleapis.com/drive/v3/files/FILE_ID/permissions/PERMISSION_ID

আইটেম অ্যাক্সেস সীমিত করার জন্য একটি মেয়াদ শেষ হওয়ার তারিখ সেট করুন

যখন আপনি কোনও সংবেদনশীল প্রকল্পে লোকেদের সাথে কাজ করেন, তখন আপনি নির্দিষ্ট সময়ের পরে ড্রাইভের নির্দিষ্ট আইটেমগুলিতে তাদের অ্যাক্সেস সীমাবদ্ধ করতে চাইতে পারেন। ফাইল এবং ফোল্ডারের জন্য, আপনি সেই আইটেমটিতে অ্যাক্সেস সীমাবদ্ধ করতে বা সরাতে একটি মেয়াদ শেষ হওয়ার তারিখ সেট করতে পারেন।

মেয়াদ শেষ হওয়ার তারিখ নির্ধারণ করতে:

  • permissions রিসোর্সে create পদ্ধতি ব্যবহার করুন এবং expirationTime ক্ষেত্রটি সেট করুন (অন্যান্য প্রয়োজনীয় ক্ষেত্রগুলির সাথে)। আরও তথ্যের জন্য, Create a permission দেখুন।

  • permissions রিসোর্সে update পদ্ধতি ব্যবহার করুন এবং expirationTime ক্ষেত্রটি সেট করুন (অন্যান্য প্রয়োজনীয় ক্ষেত্রগুলির সাথে)। আরও তথ্যের জন্য, আপডেট অনুমতি দেখুন।

RFC 3339 date-time ব্যবহার করে expirationTime ক্ষেত্রটি নির্দেশ করে যখন অনুমতির মেয়াদ শেষ হয়ে যায়। মেয়াদ শেষ হওয়ার সময়গুলিতে নিম্নলিখিত সীমাবদ্ধতা রয়েছে:

  • এগুলি কেবল ব্যবহারকারী এবং গোষ্ঠীর অনুমতির ভিত্তিতে সেট করা যেতে পারে।
  • সময় অবশ্যই ভবিষ্যতের হতে হবে।
  • ভবিষ্যতে সময়কাল এক বছরের বেশি হতে পারবে না।
  • শুধুমাত্র reader ভূমিকাই ফোল্ডারের অ্যাক্সেসের মেয়াদ শেষ হওয়ার জন্য যোগ্য।

মেয়াদ শেষ হওয়ার তারিখ সম্পর্কে আরও তথ্যের জন্য, নিম্নলিখিত নিবন্ধগুলি দেখুন: