ترتبط كل ملف ومجلد ومساحة تخزين سحابي مشتركة في Google Drive بموارد
permissions
. يحدِّد كل مورد
الإذن لـ type
(user
أو group
أو domain
أو
anyone
) وrole
(owner
أو organizer
أو fileOrganizer
أو writer
أو
commenter
أو reader
) معيّن. على سبيل المثال، قد يحتوي الملف على إذن يمنح مستخدمًا معيّنًا (type=user
) إذن الوصول للقراءة فقط (role=reader
)، في حين يمنح إذن آخر أعضاء مجموعة معيّنة (type=group
) إمكانية إضافة kommentiert إلى ملف (role=commenter
).
للحصول على قائمة كاملة بالأدوار والعمليات المسموح بها لكل دور، يُرجى الرجوع إلى الأدوار والأذونات.
آلية عمل الأذونات
تنتشر قوائم الأذونات لمجلد معيّن للأسفل. ترث كل الملفات والمجلدات الفرعية الأذونات من المجلد الرئيسي. عند تغيير الأذونات أو التسلسل الهرمي، يحدث النشر بشكل متكرر في جميع المجلدات المضمّنة. على سبيل المثال، إذا كان هناك ملف في مجلد وتم نقل هذا المجلد بعد ذلك ضمن مجلد آخر، يتم نقل الأذونات في المجلد الجديد إلى الملف. إذا منح المجلد الجديد مستخدم الملف دورًا جديدًا، مثل "كاتب"، سيتم إلغاء دوره السابق.
في المقابل، إذا اكتسب ملف إذن الوصولrole=writer
من مجلد، وتم نقله إلى
مجلد آخر يقدّم دور "قارئ"، يكتسب الملف الآن إذن الوصول
role=reader
.
لا يمكن إزالة الأذونات المكتسَبة من ملف أو مجلد في مساحة تخزين سحابي مشتركة. بدلاً من ذلك، يجب تعديل هذه الأذونات في الحساب الرئيسي المباشر أو غير المباشر الذي اكتسبت منه هذه الأذونات. يمكن إزالة الأذونات المكتسَبة من العناصر ضمن "ملفاتي" أو "تمت مشاركتها معي".
في المقابل، يمكن إلغاء الأذونات المكتسَبة في ملف أو مجلد في "ملفاتي" على Drive. وبالتالي، إذا اكتسب ملف الإذن role=writer
من مجلد "ملفاتي في Drive"، يمكنك ضبط 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, "canChangeSecurityUpdateEnabled": false, "canComment": true, "canCopy": true, "canDelete": true, "canDownload": true, "canEdit": true, "canListChildren": false, "canModifyContent": true, "canModifyContentRestriction": true, "canModifyLabels": true, "canMoveChildrenWithinDrive": false, "canMoveItemOutOfDrive": true, "canMoveItemWithinDrive": true, "canReadLabels": true, "canReadRevisions": true, "canRemoveChildren": 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
كجزء من عضويته في مساحة تخزين سحابي مشتركة. ومع ذلك، يمكن لتطبيقك منح "أليكس"
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
date-time. تنطبق القيود التالية على مُدد انتهاء الصلاحية:
- ولا يمكن ضبطها إلا على أذونات المستخدم والمجموعة.
- يجب أن يكون الوقت في المستقبل.
- لا يمكن أن يكون الوقت أكثر من عام في المستقبل.
لمزيد من المعلومات عن تاريخ انتهاء الصلاحية، اطّلِع على المقالتَين التاليتَين:
مواضيع ذات صلة
- إدارة طلبات الوصول التي في انتظار المراجعة
- نقل ملكية الملفات
- حماية محتوى الملف
- الوصول إلى ملفات مساحة التخزين السحابي المشتركة باستخدام مفاتيح الموارد
- الأدوار والأذونات