ไฟล์ โฟลเดอร์ และไดรฟ์ที่แชร์ทุกรายการใน Google ไดรฟ์จะมีแหล่งข้อมูล 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 จะตั้งค่าช่องเหล่านี้ตามแหล่งข้อมูลสิทธิ์ของผู้ใช้ปัจจุบันที่เชื่อมโยงกับไฟล์หรือโฟลเดอร์
เช่น เมื่อ Alex เข้าสู่ระบบแอปของคุณและพยายามแชร์ไฟล์ ระบบจะตรวจสอบบทบาทของ Alex เพื่อดูสิทธิ์ในไฟล์ หากบทบาทอนุญาตให้แชร์ไฟล์ ระบบจะกรอก capabilities
ที่เกี่ยวข้องกับไฟล์ เช่น canShare
ให้กับบทบาทนั้น หาก Alex ต้องการแชร์ไฟล์ แอปจะตรวจสอบ capabilities
เพื่อให้แน่ใจว่า canShare
มีค่าเป็น true
ดูตัวอย่างการเรียกข้อมูลไฟล์ capabilities
ได้ที่ดูความสามารถของไฟล์
ดูความสามารถของไฟล์
เมื่อแอปเปิดไฟล์ แอปควรตรวจสอบความสามารถของไฟล์และแสดงผล UI ให้สอดคล้องกับสิทธิ์ของผู้ใช้ปัจจุบัน เช่น หากผู้ใช้ไม่มีความสามารถ canComment
ในไฟล์ ระบบควรปิดใช้ความสามารถในการแสดงความคิดเห็นใน UI
หากต้องการตรวจสอบความสามารถ ให้เรียกใช้เมธอด 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 } }
สถานการณ์การแชร์ทรัพยากรในไดรฟ์
สถานการณ์การแชร์มี 5 ประเภทดังนี้
หากต้องการแชร์ไฟล์ในไดรฟ์ของฉัน ผู้ใช้ต้องมี
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
เฉพาะผู้ใช้และกลุ่มเท่านั้นที่จะเป็นสมาชิกของไดรฟ์ที่แชร์ได้
สร้างสิทธิ์
คุณต้องกรอกข้อมูลใน 2 ช่องต่อไปนี้เมื่อสร้างสิทธิ์
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
ใหม่ในคำขอ
คุณสามารถให้สิทธิ์ในไฟล์หรือโฟลเดอร์แต่ละรายการในไดรฟ์ที่แชร์ได้ แม้ว่าผู้ใช้หรือกลุ่มจะเป็นสมาชิกอยู่แล้วก็ตาม เช่น Alex มี 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
กำหนดวันที่หมดอายุเพื่อจำกัดการเข้าถึงไฟล์
เมื่อทำงานร่วมกับผู้อื่นในโปรเจ็กต์ที่มีความละเอียดอ่อน คุณอาจต้องจำกัดสิทธิ์เข้าถึงไฟล์บางไฟล์ในไดรฟ์ของบุคคลเหล่านั้นหลังจากผ่านไประยะหนึ่ง สำหรับไฟล์ในไดรฟ์ของฉัน คุณสามารถกำหนดวันที่หมดอายุเพื่อจำกัดหรือยกเลิกสิทธิ์เข้าถึงไฟล์ได้
วิธีกำหนดวันที่หมดอายุ
ใช้เมธอด
create()
ในแหล่งข้อมูลpermissions
และตั้งค่าช่องexpirationTime
(พร้อมกับช่องอื่นๆ ที่ต้องกรอก) ดูข้อมูลเพิ่มเติมได้ที่สร้างสิทธิ์ใช้เมธอด
update()
ในแหล่งข้อมูลpermissions
และตั้งค่าช่องexpirationTime
(พร้อมกับช่องอื่นๆ ที่ต้องกรอก) ดูข้อมูลเพิ่มเติมได้ที่อัปเดตสิทธิ์
ช่อง expirationTime
ระบุเวลาที่สิทธิ์จะหมดอายุโดยใช้ RFC 3339
date-time เวลาหมดอายุมีข้อจํากัดต่อไปนี้
- ตั้งค่าได้เฉพาะกับสิทธิ์ของผู้ใช้และกลุ่มเท่านั้น
- เวลาต้องเป็นอนาคต
- เวลาต้องไม่เกิน 1 ปีนับจากนี้
ดูข้อมูลเพิ่มเติมเกี่ยวกับวันที่หมดอายุได้ที่บทความต่อไปนี้
หัวข้อที่เกี่ยวข้อง
- จัดการข้อเสนอการเข้าถึงที่รอดำเนินการ
- โอนการเป็นเจ้าของไฟล์
- ปกป้องเนื้อหาไฟล์
- เข้าถึงไฟล์ในไดรฟ์ที่แชร์ลิงก์โดยใช้คีย์ทรัพยากร
- บทบาทและสิทธิ์