يتضمّن كل ملف ومجلد ومساحة تخزين سحابي مشتركة في Google Drive مراجع مرتبطة
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.
لا يمكن إزالة الأذونات المكتسبة أو تقليلها على أي ملف. بدلاً من ذلك، يجب تعديل هذه الأذونات في المجلد الرئيسي الذي نشأت فيه أو يجب تفعيل إعدادات الوصول المحدود في مجلد ضمن التسلسل الهرمي.
يمكن زيادة الأذونات المكتسَبة في عنصر. إذا تم رفع مستوى الإذن الخاص بطفل، لن يؤثر تغيير إذن أحد الوالدَين في إذن الطفل إلا إذا كان إذن الوالد الجديد أكبر من إذن الطفل.
لا تتوفّر عمليات الأذونات المتزامنة على الملف نفسه. يتم تطبيق آخر تعديل فقط.
التعرّف على إمكانات الملفات
لا يحدّد المرجع permissions في النهاية ما إذا كان بإمكان المستخدم الحالي تنفيذ إجراءات على ملف أو مجلد.
بدلاً من ذلك، يحتوي المرجع files على مجموعة من حقول capabilities المنطقية المستخدَمة للإشارة إلى ما إذا كان يمكن تنفيذ إجراء على ملف أو مجلد.
تضبط Google Drive API هذه الحقول استنادًا إلى permissionsالموردpermissions الحالي للمستخدم المرتبط بالملف أو المجلد.
على سبيل المثال، عندما يسجّل "أحمد" الدخول إلى تطبيقك ويحاول مشاركة ملف، يتم التحقّق من دور "أحمد" للتأكّد من توفّر الأذونات اللازمة له للوصول إلى الملف. إذا كان الدور يسمح للمستخدم بمشاركة ملف، يتم ضبط capabilities المرتبطة بالملف، مثل canShare، وفقًا للدور. إذا أراد "أحمد" مشاركة الملف، يتحقّق تطبيقك من capabilities للتأكّد من أنّ canShare مضبوط على true.
الحصول على إمكانات الملف
عندما يفتح تطبيقك ملفًا، عليه التحقّق من إمكانات الملف وعرض واجهة المستخدم بما يتوافق مع أذونات المستخدم الحالي. على سبيل المثال، إذا لم يكن لدى المستخدم إذن canComment في الملف، يجب إيقاف إمكانية التعليق في واجهة المستخدم.
للتحقّق من الإمكانات، استدعِ طريقة get
في المورد files مع مَعلمة المسار fileId
والمَعلمة fields التي تم ضبطها على الحقل capabilities. لمزيد من المعلومات حول عرض الحقول باستخدام المَعلمة 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 } }
سيناريوهات لمشاركة مراجع Drive
هناك خمسة أنواع مختلفة من سيناريوهات المشاركة:
لمشاركة ملف في "ملفاتي"، يجب أن يكون لدى المستخدم إذن
role=writerأوrole=owner.إذا تم ضبط القيمة المنطقية
writersCanShareللملف علىfalse، يجب أن يكون لدى المستخدمrole=owner.إذا كان المستخدم الذي لديه
role=writerلديه إذن وصول مؤقت يخضع لتاريخ ووقت انتهاء الصلاحية، لن يتمكّن من مشاركة الملف. لمزيد من المعلومات، يُرجى الاطّلاع على تحديد تاريخ انتهاء صلاحية للحدّ من إمكانية الوصول إلى الملفات.
لمشاركة مجلد في "ملفاتي"، يجب أن يكون لدى المستخدم إذن
role=writerأوrole=owner.إذا تم ضبط القيمة المنطقية
writersCanShareعلىfalseللملف، يجب أن يكون لدى المستخدم إذنrole=ownerالأكثر تساهلاً.لا يُسمح بالوصول المؤقت (الذي يحكمه تاريخ ووقت انتهاء الصلاحية) إلا إلى المجلدات التي تتضمّن
role=reader. لمزيد من المعلومات، يُرجى الاطّلاع على تحديد تاريخ انتهاء صلاحية للحدّ من إمكانية الوصول إلى العناصر.
لمشاركة ملف في مساحة تخزين سحابي مشتركة، يجب أن يكون لدى المستخدم إذن
role=writerأوrole=fileOrganizerأوrole=organizer.- لا ينطبق الإعداد
writersCanShareعلى العناصر في مساحات التخزين السحابي المشتركة. ويتم التعامل معه كما لو كان مضبوطًا دائمًا علىtrue.
- لا ينطبق الإعداد
لمشاركة مجلد في مساحة تخزين سحابي مشتركة، يجب أن يكون لدى المستخدم
role=organizer.- إذا تم ضبط القيود على
sharingFoldersRequiresOrganizerPermissionفي مساحة التخزين السحابي المشتركة علىfalse، يمكن للمستخدمين الذين لديهمrole=fileOrganizerمشاركة المجلدات في مساحة التخزين السحابي المشتركة هذه.
- إذا تم ضبط القيود على
لإدارة عضوية مساحة التخزين السحابي المشتركة، يجب أن يكون لدى المستخدم
role=organizer. يمكن أن يكون المستخدمون والمجموعات فقط أعضاء في مساحات التخزين السحابي المشتركة.
استخدام مَعلمة fields
إذا أردت تحديد الحقول التي سيتم عرضها في الاستجابة، يمكنك ضبط المَعلمة fields system مع أي طريقة من طرق المورد permissions. في حال حذف المَعلمة 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لجميع المستخدمين في النطاق إضافة تعليقات إلى ملف. للاطّلاع على قائمة كاملة بالأدوار والعمليات المسموح بها لكل دور، يُرجى الرجوع إلى الأدوار والأذونات.
عند إنشاء إذن يتضمّن type=user أو type=group، يجب أيضًا تقديم
emailAddress
لربط المستخدم أو المجموعة المحدّدين بالإذن.
عند إنشاء إذن حيث type=domain، يجب أيضًا تقديم
domain لربط نطاق
محدّد بالإذن.
لإنشاء إذن، اتّبِع الخطوات التالية:
- استخدِم طريقة
createفي الموردpermissionsمع مَعلمة المسارfileIdللملف أو المجلد المرتبطَين. - في نص الطلب، حدِّد
typeوrole. - إذا كانت القيمة
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"
}استخدام شرائح الجمهور المستهدَفة
الجماهير المستهدفة هي مجموعات من الأشخاص، مثل الأقسام أو الفِرق، يمكنك اقتراحها للمستخدمين لمشاركة العناصر معها. يمكنك تشجيع المستخدمين على مشاركة العناصر مع جمهور مُعيَّن أو محدود بدلاً من المؤسسة بأكملها. يمكن أن تساعدك الجماهير المستهدفة في تحسين أمان بياناتك وخصوصيتها، وتسهيل مشاركتها بشكل مناسب. لمزيد من المعلومات، راجِع المقالة لمحة عن شرائح الجمهور المستهدَفة.
لاستخدام الجماهير المستهدفة، اتّبِع الخطوات التالية:
في "وحدة تحكّم المشرف في Google"، انتقِل إلى "القائمة" > الدليل > الجماهير المستهدفة.
الانتقال إلى "الجماهير المستهدفة"
يجب تسجيل الدخول باستخدام حساب يمتلك امتيازات المشرف المتميّز لإجراء هذه المهمة.
في قائمة الجماهير المستهدفة، انقر على اسم الجمهور المستهدف. لإنشاء جمهور مستهدف، راجِع مقالة إنشاء جمهور مستهدف.
انسخ المعرّف الفريد من عنوان URL الخاص بالجمهور المستهدف:
https://admin.google.com/ac/targetaudiences/ID.أنشئ إذنًا باستخدام
type=domain، واضبط حقلdomainعلىID.audience.googledomains.com.
لمعرفة كيفية تفاعل المستخدمين مع شرائح الجمهور المستهدَفة، اطّلِع على تجربة المستخدمين في ما يتعلّق بمشاركة الروابط.
الحصول على إذن
للحصول على إذن، استخدِم طريقة get على المورد permissions مع مَعلمتَي المسار fileId وpermissionId. إذا كنت لا تعرف معرّف الإذن، يمكنك إدراج جميع الأذونات باستخدام طريقة list.
يوضّح نموذج الرمز البرمجي التالي كيفية الحصول على إذن باستخدام المعرّف. تعرض الاستجابة مثيلاً لمورد 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"
}
]
}عرض جميع الأذونات
لعرض قائمة بأذونات ملف أو مجلد أو مساحة تخزين سحابي مشتركة، استخدِم طريقة list في مورد permissions مع مَعلمة المسار fileId.
مرِّر مَعلمات طلب البحث التالية لتخصيص تقسيم الأذونات إلى صفحات أو لفلترتها:
pageSize: الحد الأقصى لعدد الأذونات التي سيتم عرضها في كل صفحة. إذا لم يتم ضبط هذا الخيار للملفات في مساحة تخزين سحابي مشتركة، سيتم عرض 100 نتيجة كحد أقصى. إذا لم يتم ضبطها للملفات غير الموجودة في مساحة تخزين سحابي مشتركة، سيتم عرض القائمة بأكملها.pageToken: رمز مميز للصفحة تم تلقّيه من طلب قائمة سابق. قدِّم هذا الرمز المميز لاسترداد الصفحة التالية.
supportsAllDrives: ما إذا كان التطبيق الذي يطلب الوصول يتيح استخدام كل من "ملفاتي" ومساحات التخزين السحابي المشتركة.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"
}
]
}تحديث الأذونات
لتعديل الأذونات في ملف أو مجلد، يمكنك تغيير الدور المحدّد. لمزيد من المعلومات حول العثور على مصدر الدور، راجِع مقالة تحديد مصدر الدور.
استدعِ طريقة
updateفي الموردpermissionsمع ضبط المَعلمةfileIdللمسار على الملف أو المجلد أو مساحة التخزين السحابي المشتركة المرتبطة، وضبط المَعلمةpermissionIdللمسار على الإذن المطلوب تغييره. للعثور علىpermissionId، استخدِم طريقةlistفي المرجعpermissionsمع مَعلمة المسارfileId.في الطلب، حدِّد
roleالجديد.
يمكنك منح أذونات لملفات أو مجلدات فردية في مساحة تخزين سحابي مشتركة حتى إذا كان المستخدم أو المجموعة عضوًا فيها. على سبيل المثال، يملك "أحمد" role=commenter
كجزء من عضويته في مساحة تخزين سحابي مشتركة. ومع ذلك، يمكن لتطبيقك منح Alex
role=writer إذن الوصول إلى ملف في مساحة تخزين سحابي مشتركة. في هذه الحالة، وبما أنّ الدور الجديد يمنح أذونات أكثر من الدور الممنوح من خلال الاشتراك، يصبح الإذن الجديد هو الدور الفعّال للملف أو المجلد.
يمكنك تطبيق التعديلات من خلال دلالات التصحيح، ما يعني أنّه يمكنك إجراء تعديلات جزئية على أحد المراجع. يجب ضبط الحقول التي تريد تعديلها في طلبك بشكل صريح. ستحتفظ أي حقول غير مضمّنة في الطلب بقيمها الحالية. لمزيد من المعلومات، يُرجى الاطّلاع على العمل باستخدام الموارد الجزئية.
يوضّح نموذج الرمز البرمجي التالي كيفية تغيير الأذونات في ملف أو مجلد من commenter إلى writer. تعرض الاستجابة مثيلاً لمورد permissions.
الطلب
PATCH https://www.googleapis.com/drive/v3/files/FILE_ID/permissions/PERMISSION_ID
{
"role": "writer"
}الردّ
{
"kind": "drive#permission",
"id": "PERMISSION_ID",
"type": "user",
"role": "writer"
}تحديد مصدر الدور
لتغيير الدور في ملف أو مجلد، يجب معرفة مصدر الدور. بالنسبة إلى مساحات التخزين السحابي المشتركة، يمكن أن يستند مصدر الدور إلى العضوية في مساحة التخزين السحابي المشتركة أو الدور في مجلد أو الدور في ملف.
لتحديد مصدر الدور لمساحة تخزين سحابي مشتركة أو العناصر داخلها، استدعِ طريقة get في المورد permissions باستخدام مَعلمتَي المسار fileId وpermissionId، وضبط المَعلمة fields على الحقل permissionDetails.
للعثور على permissionId، استخدِم طريقة
list في مورد permissions
مع مَعلمة المسار fileId. لاسترداد حقل permissionDetails في طلب list، اضبط المَعلمة fields على permissions/permissionDetails.
يسرد هذا الحقل جميع أذونات الملفات المكتسَبة والمباشرة للمستخدم أو المجموعة أو النطاق.
توضح عينة التعليمات البرمجية التالية كيفية تحديد مصدر الدور. يعرض الردّ permissionDetails لمورد permissions. يوفّر الحقل inheritedFrom معرّف العنصر الذي يتم اكتساب الإذن منه.
الطلب
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
}
]
}تعديل أذونات متعددة باستخدام طلبات مجمّعة
ننصحك بشدة باستخدام طلبات مجمّعة لتعديل أذونات متعددة.
في ما يلي مثال على إجراء تعديل مجمّع للأذونات باستخدام مكتبة برامج.
جافا
Python
Node.js
PHP
NET.
حذف إذن
لإبطال إذن الوصول إلى ملف أو مجلد، استخدِم طريقة delete في المورد permissions مع ضبط مَعلمتَي المسار fileId وpermissionId على الحذف.
لا يمكن إلغاء الأذونات المكتسَبة. يمكنك تعديل الإذن أو حذفه في المجلد الأصل بدلاً من ذلك. يؤدي حذف إذن في مجلد إلى إلغاء أي إذن وصول مكافئ في العناصر الفرعية.
يتطلّب تقليل الأذونات مقارنةً بحساب الوالد استخدام إعداد الوصول المحدود.
يوضّح نموذج الرمز البرمجي التالي كيفية إبطال إذن الوصول عن طريق حذف permissionId. إذا كانت الاستجابة ناجحة، سيكون نص الاستجابة عبارة عن كائن JSON فارغ. للتأكّد من إزالة الإذن، استخدِم طريقة list في مورد permissions مع مَعلمة المسار fileId.
الطلب
DELETE https://www.googleapis.com/drive/v3/files/FILE_ID/permissions/PERMISSION_ID
تحديد تاريخ انتهاء صلاحية للحدّ من إمكانية الوصول إلى الملف
عند العمل مع مستخدمين على مشروع حسّاس، قد تريد تقييد وصولهم إلى عناصر معيّنة في Drive بعد فترة زمنية معيّنة. بالنسبة إلى الملفات والمجلدات، يمكنك تحديد تاريخ انتهاء صلاحية للحد من الوصول إلى هذا العنصر أو إزالته.
لتحديد تاريخ انتهاء الصلاحية، اتّبِع الخطوات التالية:
استخدِم الطريقة
createفي الموردpermissionsواضبط الحقلexpirationTime(بالإضافة إلى الحقول المطلوبة الأخرى). لمزيد من المعلومات، يُرجى الاطّلاع على إنشاء إذن.استخدِم طريقة
updateفي المرجعpermissionsواضبط الحقلexpirationTime(بالإضافة إلى الحقول المطلوبة الأخرى). لمزيد من المعلومات، يُرجى الاطّلاع على تعديل الأذونات.
يشير الحقل
expirationTime
إلى وقت انتهاء صلاحية الإذن باستخدام تنسيق التاريخ والوقت RFC 3339. تنطبق القيود التالية على أوقات انتهاء الصلاحية:
- لا يمكن ضبطها إلا على أذونات المستخدمين والمجموعات.
- يجب أن يكون الوقت في المستقبل.
- لا يمكن أن يكون الوقت بعد أكثر من عام واحد في المستقبل.
- دور
readerفقط هو المؤهَّل لإمكانية وصول مؤقتة إلى مجلد.
لمزيد من المعلومات عن تاريخ انتهاء الصلاحية، يُرجى الاطّلاع على المقالات التالية:
مواضيع ذات صلة
- إدارة اقتراحات الوصول المعلّقة
- إدارة المجلدات ذات إذن الوصول المحدود والواسع
- نقل ملكية الملفات
- حماية محتوى الملف
- الوصول إلى ملفات مساحة التخزين السحابي المشتركة التي تتم مشاركتها باستخدام رابط من خلال مفاتيح الموارد
- الأدوار والأذونات