يتضمّن كل ملف ومجلد ومساحة تخزين سحابي مشتركة في 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.
لا يمكن إزالة الأذونات المكتسبة من ملف أو مجلد في مساحة تخزين سحابي مشتركة. بدلاً من ذلك، يجب تعديل هذه الأذونات على المجلد الرئيسي المباشر أو غير المباشر الذي تم اكتسابها منه. يمكن إزالة الأذونات المكتسَبة من الملفات ضمن "ملفاتي" أو "تمت مشاركتها معي".
في المقابل، يمكن إلغاء الأذونات الموروثة في ملف أو مجلد في "ملفاتي". لذلك، إذا كان ملف يرث role=writer من مجلد في "ملفاتي"، يمكنك ضبط role=reader على الملف لتقليل مستوى أذوناته.
لا تتوفّر عمليات الأذونات المتزامنة على الملف نفسه. يتم تطبيق التحديث الأخير فقط.
فهم إمكانات الملفات
لا يحدّد المورد permissions في النهاية ما إذا كان بإمكان المستخدم الحالي تنفيذ إجراءات على ملف أو مجلد.
بدلاً من ذلك، يحتوي المرجع files على مجموعة من حقول capabilities المنطقية المستخدَمة للإشارة إلى ما إذا كان يمكن تنفيذ إجراء على ملف أو مجلد.
تضبط Google Drive API هذه الحقول استنادًا إلى 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=writer. لمزيد من المعلومات، يُرجى الاطّلاع على المقالة تحديد تاريخ انتهاء صلاحية للحدّ من إمكانية الوصول إلى الملفات.
لمشاركة ملف في مساحة تخزين سحابي مشتركة، يجب أن يكون لدى المستخدم إذن
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
{
"requests": [
{
"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
}
]
}تعديل أذونات متعددة باستخدام طلبات مجمّعة
ننصحك بشدة باستخدام طلبات مجمّعة لتعديل أذونات متعددة.
في ما يلي مثال على إجراء تعديل مجمّع للأذونات باستخدام مكتبة برامج.
Java
Python
Node.js
PHP
NET.
حذف إذن
لإبطال إذن الوصول إلى ملف أو مجلد، استخدِم طريقة
delete في المورد
permissions مع ضبط المَعلمتَين fileId وpermissionId على المسار لحذف الإذن.
بالنسبة إلى الملفات في "ملفاتي"، يمكن حذف إذن موروث. يؤدي حذف إذن وصول مُكتسَب إلى إلغاء إذن الوصول إلى الملف والعناصر الفرعية، إن وُجدت.
بالنسبة إلى العناصر في مساحة تخزين سحابي مشتركة، لا يمكن إبطال الأذونات المكتسبة. يمكنك تعديل الإذن أو حذفه في الملف أو المجلد الرئيسي بدلاً من ذلك.
يُستخدَم أيضًا الأسلوب delete لحذف الأذونات المطبَّقة مباشرةً على ملف أو مجلد في مساحة تخزين سحابي مشتركة.
يوضّح نموذج الرمز البرمجي التالي كيفية إبطال إذن الوصول عن طريق حذف 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. تنطبق القيود التالية على أوقات انتهاء الصلاحية:
- لا يمكن ضبطها إلا على أذونات المستخدمين والمجموعات.
- يجب أن يكون الوقت في المستقبل.
- لا يمكن أن يكون الوقت بعد أكثر من عام واحد في المستقبل.
لمزيد من المعلومات عن تاريخ انتهاء الصلاحية، اطّلِع على المقالات التالية:
مواضيع ذات صلة
- إدارة اقتراحات الوصول المعلّقة
- إدارة المجلدات ذات إذن الوصول المحدود والواسع
- نقل ملكية الملفات
- حماية محتوى الملف
- الوصول إلى ملفات مساحة التخزين السحابي المشتركة التي تتم مشاركتها باستخدام رابط من خلال مفاتيح الموارد
- الأدوار والأذونات