يتضمّن كل ملف ومجلد ومساحة تخزين سحابي مشتركة في 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 هذه الحقول استنادًا إلى مورد الأذونات الخاص بالمستخدم الحالي والمرتبط بالملف أو المجلد.
على سبيل المثال، عندما يسجّل "أحمد" الدخول إلى تطبيقك ويحاول مشاركة ملف، يتم التحقّق من دور "أحمد" للتأكّد من توفّر الأذونات اللازمة للوصول إلى الملف. إذا كان الدور يسمح للمستخدم بمشاركة ملف، سيتم ملء capabilities
المرتبط بالملف، مثل canShare
، وفقًا للدور. إذا أراد "أحمد" مشاركة الملف، يتحقّق تطبيقك من
capabilities
للتأكّد من أنّ canShare
مضبوط على true
.
للاطّلاع على مثال على استرداد الملف capabilities
، يُرجى الاطّلاع على الحصول على إمكانات الملف.
الحصول على إمكانات الملف
عندما يفتح تطبيقك ملفًا، يجب أن يتحقّق من إمكانات الملف ويعرض واجهة المستخدم بما يتوافق مع أذونات المستخدم الحالي. على سبيل المثال، إذا لم يكن لدى المستخدم إذن 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
. يمكن للمستخدمين والمجموعات فقط أن يكونوا أعضاء في مساحات التخزين السحابي المشتركة.
إنشاء إذن
يجب ملء الحقلَين التاليَين عند إنشاء إذن:
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()
مع مَعلمة المسارfileId
للملف أو المجلد المرتبطَين. - في نص الطلب، حدِّد
type
وrole
. - إذا كان
type=user
أوtype=group
، قدِّمemailAddress
. إذا كانتtype=domain
، يُرجى تقديمdomain
.
يوضّح نموذج الرمز البرمجي التالي كيفية إنشاء إذن. تعرض الاستجابة مثيلاً لمورد Permission
، بما في ذلك 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
.
لمعرفة كيفية تفاعل المستخدمين مع شرائح الجمهور المستهدَفة، اطّلِع على تجربة المستخدم للمشاركة باستخدام رابط.
سرد جميع الأذونات
استخدِم طريقة list()
في المورد permissions
لاسترداد جميع الأذونات الخاصة بملف أو مجلد أو مساحة تخزين سحابي مشتركة.
يوضّح نموذج الرمز البرمجي التالي كيفية الحصول على جميع الأذونات. يعرض الردّ قائمة بالأذونات.
الطلب
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
مع ضبط مَعلمة المسارpermissionId
على الإذن المطلوب تغييره، وضبط مَعلمة المسارfileId
على الملف أو المجلد أو مساحة التخزين السحابي المشتركة المرتبطة. للعثور علىpermissionId
، استخدِم طريقةlist()
في موردpermissions
مع مَعلمة المسارfileId
.في الطلب، حدِّد
role
الجديد.
يمكنك منح أذونات لملفات أو مجلدات فردية في مساحة تخزين سحابي مشتركة حتى إذا كان المستخدم أو المجموعة عضوًا فيها. على سبيل المثال، يملك "أحمد" role=commenter
كجزء من عضويته في مساحة تخزين سحابي مشتركة. ومع ذلك، يمكن لتطبيقك منح Alex
role=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
. إذا كانت الاستجابة ناجحة، سيكون نص الاستجابة فارغًا. للتأكّد من إزالة الإذن، استخدِم طريقة 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. تنطبق القيود التالية على أوقات انتهاء الصلاحية:
- لا يمكن ضبطها إلا على أذونات المستخدمين والمجموعات.
- يجب أن يكون الوقت في المستقبل.
- لا يمكن أن يكون الوقت بعد أكثر من عام واحد في المستقبل.
لمزيد من المعلومات عن تاريخ انتهاء الصلاحية، اطّلِع على المقالات التالية:
مواضيع ذات صلة
- إدارة اقتراحات الوصول المعلقة
- إدارة المجلدات ذات إذن الوصول المحدود والواسع
- نقل ملكية الملفات
- حماية محتوى الملف
- الوصول إلى ملفات مساحة التخزين السحابي المشتركة التي تتم مشاركتها باستخدام رابط من خلال مفاتيح الموارد
- الأدوار والأذونات