يتضمّن كل ملف ومجلد ومساحة تخزين سحابي مشتركة في 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. تنطبق القيود التالية على أوقات انتهاء الصلاحية:
- لا يمكن ضبطها إلا على أذونات المستخدمين والمجموعات.
- يجب أن يكون الوقت في المستقبل.
- لا يمكن أن يكون الوقت بعد أكثر من عام واحد في المستقبل.
لمزيد من المعلومات عن تاريخ انتهاء الصلاحية، اطّلِع على المقالات التالية:
مواضيع ذات صلة
- إدارة اقتراحات الوصول المعلّقة
- إدارة المجلدات ذات إذن الوصول المحدود والواسع
- نقل ملكية الملفات
- حماية محتوى الملف
- الوصول إلى ملفات مساحة التخزين السحابي المشتركة التي تتم مشاركتها باستخدام رابط من خلال مفاتيح الموارد
- الأدوار والأذونات