ไฟล์ โฟลเดอร์ และไดรฟ์ที่แชร์ทุกรายการใน Google ไดรฟ์จะมีทรัพยากร permissions
ที่เชื่อมโยงอยู่ แต่ละทรัพยากรจะระบุสิทธิ์สำหรับ type
(user
, group
, domain
, anyone
) และ role
(owner
, organizer
, fileOrganizer
, writer
, commenter
, reader
) ที่เฉพาะเจาะจง ตัวอย่างเช่น ไฟล์อาจมีสิทธิ์ที่ให้สิทธิ์การเข้าถึงแบบอ่านอย่างเดียว (role=reader
) แก่ผู้ใช้ที่เฉพาะเจาะจง (type=user
) ในขณะที่สิทธิ์อื่นให้สิทธิ์แก่สมาชิกของกลุ่มที่เฉพาะเจาะจง (type=group
) ในการเพิ่มความคิดเห็นในไฟล์ (role=commenter
)
ดูรายการบทบาททั้งหมดและการดำเนินการที่แต่ละบทบาทอนุญาตได้ที่บทบาทและสิทธิ์
วิธีการทำงานของสิทธิ์
รายการสิทธิ์สำหรับโฟลเดอร์จะส่งต่อลงไป ไฟล์และโฟลเดอร์ย่อยทั้งหมด จะรับสิทธิ์มาจากโฟลเดอร์หลัก เมื่อใดก็ตามที่มีการเปลี่ยนแปลงสิทธิ์หรือลำดับชั้น การส่งต่อจะเกิดขึ้นแบบเรียกซ้ำผ่านโฟลเดอร์ที่ซ้อนกันทั้งหมด ตัวอย่างเช่น หากมีไฟล์อยู่ในโฟลเดอร์และมีการย้ายโฟลเดอร์นั้นไปไว้ในโฟลเดอร์อื่น สิทธิ์ในโฟลเดอร์ใหม่จะแพร่ไปยังไฟล์ หาก โฟลเดอร์ใหม่ให้บทบาทใหม่แก่ผู้ใช้ไฟล์ เช่น "ผู้เขียน" บทบาทใหม่จะลบล้าง บทบาทเก่าของผู้ใช้
ในทางกลับกัน หากไฟล์รับค่า role=writer
จากโฟลเดอร์ และย้ายไปยัง
โฟลเดอร์อื่นที่มีบทบาท "ผู้อ่าน" ไฟล์จะรับค่า
role=reader
นำสิทธิ์ที่ได้รับออกจากไฟล์หรือโฟลเดอร์ในไดรฟ์ที่แชร์ไม่ได้ แต่ต้องปรับสิทธิ์เหล่านี้ในระดับบนสุดโดยตรงหรือโดยอ้อมที่รับช่วงมา คุณสามารถนำสิทธิ์ที่รับช่วงมาจากรายการใน "ไดรฟ์ของฉัน" หรือ "แชร์กับฉัน" ได้
ในทางกลับกัน คุณสามารถลบล้างสิทธิ์ที่รับค่ามาในไฟล์หรือโฟลเดอร์ในไดรฟ์ของฉันได้ ดังนั้น หากไฟล์รับค่า role=writer
จากโฟลเดอร์ใน
ไดรฟ์ของฉัน คุณจะตั้งค่า role=reader
ในไฟล์เพื่อลดระดับ
สิทธิ์ได้
ทำความเข้าใจความสามารถของไฟล์
ทรัพยากร permissions
ไม่ได้เป็นตัวกำหนดความสามารถของผู้ใช้ปัจจุบันในการดำเนินการกับไฟล์หรือโฟลเดอร์
แต่ทรัพยากร files
จะมีคอลเล็กชัน
ของฟิลด์บูลีน capabilities
ที่ใช้เพื่อระบุว่าดำเนินการกับไฟล์หรือโฟลเดอร์ได้หรือไม่
Google ไดรฟ์ API จะตั้งค่าฟิลด์เหล่านี้ตาม
แหล่งข้อมูลสิทธิ์ของผู้ใช้ปัจจุบันที่เชื่อมโยงกับไฟล์หรือโฟลเดอร์
เช่น เมื่ออเล็กซ์เข้าสู่ระบบแอปของคุณและพยายามแชร์ไฟล์ ระบบจะตรวจสอบบทบาทของอเล็กซ์
เพื่อดูสิทธิ์ในไฟล์ หากบทบาทอนุญาตให้แชร์ไฟล์ได้
ระบบจะกรอกข้อมูลcapabilities
ที่เกี่ยวข้องกับไฟล์ เช่น canShare
ตามบทบาท หากอเล็กซ์ต้องการแชร์ไฟล์ แอปของคุณจะตรวจสอบ
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, "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 } }
สถานการณ์การแชร์ทรัพยากรในไดรฟ์
สถานการณ์การแชร์มี 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
ใหม่ในคำขอ
คุณสามารถให้สิทธิ์ในไฟล์หรือโฟลเดอร์แต่ละรายการในไดรฟ์ที่แชร์ได้ แม้ว่าผู้ใช้หรือกลุ่มจะเป็นสมาชิกอยู่แล้วก็ตาม เช่น อเล็กซ์มี 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 เวลาหมดอายุมีข้อจำกัดดังนี้
- ตั้งค่าได้เฉพาะกับสิทธิ์ของผู้ใช้และกลุ่มเท่านั้น
- เวลาต้องเป็นเวลาในอนาคต
- เวลาต้องไม่เกิน 1 ปีนับจากนี้
ดูข้อมูลเพิ่มเติมเกี่ยวกับวันที่หมดอายุได้ที่บทความต่อไปนี้
หัวข้อที่เกี่ยวข้อง
- จัดการข้อเสนอการเข้าถึงที่รอดำเนินการ
- จัดการโฟลเดอร์ที่มีสิทธิ์เข้าถึงแบบจำกัดและแบบขยาย
- โอนการเป็นเจ้าของไฟล์
- ปกป้องเนื้อหาไฟล์
- เข้าถึงไฟล์ในไดรฟ์ที่แชร์ผ่านลิงก์โดยใช้คีย์ทรัพยากร
- บทบาทและสิทธิ์