Mọi tệp, thư mục và bộ nhớ dùng chung trên Google Drive đều đã liên kết
quyền. Mỗi tài nguyên
xác định quyền cho một type
cụ thể (người dùng, nhóm, miền, bất kỳ ai)
và role
, chẳng hạn như "người nhận xét" hoặc "trình đọc". Ví dụ: một tệp có thể có
quyền cấp cho một người dùng cụ thể (type=user
) quyền truy cập chỉ đọc
(role=reader
) trong khi một quyền khác cấp cho các thành viên của một nhóm cụ thể
(type=group
) khả năng thêm nhận xét vào tệp (role=commenter
).
Để xem danh sách đầy đủ các vai trò và những thao tác mà mỗi vai trò được phép, hãy tham khảo Vai trò và quyền truy cập.
Các trường hợp chia sẻ tài nguyên Drive
Có 5 loại tình huống chia sẻ:
Để chia sẻ tệp trong phần Drive của tôi, người dùng phải có
role=writer
hoặcrole=owner
.Nếu giá trị boolean
writersCanShare
được thiết lập thànhFalse
cho tệp, người dùng phải córole=owner
.Nếu người dùng có
role=writer
có quyền truy cập tạm thời chịu sự điều chỉnh của một ngày và giờ hết hạn, họ không thể chia sẻ tệp. Để biết thêm hãy xem phần Đặt ngày hết hạn để giới hạn tệp truy cập.
Để chia sẻ một thư mục trong phần Drive của tôi, người dùng phải có
role=writer
hoặcrole=owner
.Nếu giá trị boolean
writersCanShare
được đặt thànhFalse
cho tệp, người dùng phải córole=owner
quyền thoải mái hơn.Không cho phép quyền truy cập tạm thời (có ngày và giờ hết hạn kiểm soát) trên các thư mục Drive của tôi với
role=writer
. Để biết thêm thông tin, xem Đặt ngày hết hạn để giới hạn quyền truy cập vào tệp.
Để chia sẻ tệp trong bộ nhớ dùng chung, người dùng phải có
role=writer
,role=fileOrganizer
hoặcrole=organizer
.- Chế độ cài đặt
writersCanShare
không áp dụng cho các mục trong bộ nhớ dùng chung. Thuộc tính này được xử lý như thể luôn được đặt thànhTrue
.
- Chế độ cài đặt
Để chia sẻ một thư mục trong bộ nhớ dùng chung, người dùng phải có
role=organizer
.- Nếu quy định hạn chế
sharingFoldersRequiresOrganizerPermission
trên một bộ nhớ dùng chung được đặt thànhFalse
, người dùng córole=fileOrganizer
có thể chia sẻ thư mục trong bộ nhớ dùng chung đó.
- Nếu quy định hạn chế
Để quản lý tư cách thành viên trong bộ nhớ dùng chung, người dùng phải có
role=organizer
. Chỉ người dùng và nhóm có thể là thành viên của bộ nhớ dùng chung.
Đặt ngày hết hạn để giới hạn quyền truy cập vào tệp
Khi làm việc với những người trong một dự án nhạy cảm, có thể bạn muốn: hạn chế quyền truy cập của họ vào một số tệp nhất định trong Drive sau một khoảng thời gian bất cứ lúc nào. Đối với các tệp trong Drive của tôi, bạn có thể đặt ngày hết hạn thành giới hạn hoặc xoá quyền truy cập vào tệp đó.
Cách đặt ngày hết hạn:
- Sử dụng
permissions.create
và đặtpermissions.expirationTime
(cùng với các trường bắt buộc khác). Để biết thêm thông tin, hãy xem Tạo quyền. - Sử dụng
permissions.update
và đặt trườngpermissions.expirationTime
(cùng với trường khác các trường bắt buộc). Để biết thêm thông tin, hãy xem phần Thay đổi quyền truy cập.
Trường expirationTime
biểu thị thời điểm quyền hết hạn bằng cách sử dụng RFC 3339
ngày giờ
của Google. Thời gian hết hạn có các hạn chế sau:
- Bạn chỉ có thể đặt các chế độ cài đặt này cho các quyền của người dùng và nhóm.
- Thời gian này phải là thời gian trong tương lai.
- Thời gian này không được vượt quá một năm trong tương lai.
Để biết thêm thông tin về ngày hết hạn, hãy xem các bài viết sau:
Truyền quyền
Danh sách quyền cho một thư mục sẽ lan truyền xuống dưới, và tất cả các tệp con và thư mục sẽ kế thừa quyền từ thư mục mẹ. Bất cứ khi nào quyền hoặc bị thay đổi, thì việc lan truyền xảy ra đệ quy qua tất cả các lớp được lồng . Ví dụ: nếu một tệp tồn tại trong một thư mục và thư mục đó sẽ được di chuyển trong một thư mục khác, các quyền trên thư mục mới sẽ áp dụng cho tệp. Nếu thư mục mới cấp cho người dùng của tệp vai trò mới, chẳng hạn như "người viết", nó thay thế vai trò cũ của họ.
Ngược lại, nếu một tệp kế thừa role=writer
từ một thư mục và được di chuyển sang
một thư mục khác cung cấp "trình đọc" vai trò, tệp bây giờ sẽ kế thừa
role=reader
.
Bạn không thể xoá các quyền được kế thừa khỏi một tệp hoặc thư mục trong bộ nhớ dùng chung. Thay vào đó, bạn phải điều chỉnh các quyền này đối với nhà xuất bản mẹ trực tiếp hoặc gián tiếp thông qua mà chúng được kế thừa. Bạn có thể xoá các quyền được kế thừa khỏi các mục trong "Drive của tôi" hoặc "Được chia sẻ với tôi".
Ngược lại, các quyền được kế thừa có thể bị ghi đè trên một tệp hoặc thư mục trong
Drive. Vì vậy, nếu một tệp kế thừa role=writer
từ thuộc tính
Thư mục Drive, bạn có thể đặt role=reader
trên tệp để giảm số tệp
cấp quyền.
Tính năng
Tài nguyên về Quyền không rốt cuộc
xác định khả năng thực hiện thao tác trên tệp hoặc thư mục của người dùng hiện tại.
Thay vào đó, tài nguyên Files chứa một tập hợp
boolean capabilities
dùng để cho biết có thể thực hiện một hành động hay không
thực hiện trên tệp hoặc thư mục. API Google Drive đặt những trường này dựa trên
tài nguyên quyền của người dùng hiện tại được liên kết với tệp hoặc thư mục.
Ví dụ: khi Alex đăng nhập vào ứng dụng của bạn và cố gắng chia sẻ tệp, vai trò của Alex
được kiểm tra các quyền đối với tệp. Nếu vai trò đó cho phép họ chia sẻ tệp,
capabilities
liên quan đến tệp, chẳng hạn như canShare
, sẽ được điền vào
liên quan đến vai trò. Nếu Alex muốn chia sẻ tệp, ứng dụng của bạn sẽ kiểm tra
capabilities
để đảm bảo canShare
được đặt thành true
.
Để xem ví dụ về cách truy xuất tệp capabilities
, hãy xem phần Xác minh người dùng
quyền.
Tạo một quyền
Sau đây là 2 trường cần thiết khi tạo quyền:
type
—type
xác định phạm vi của quyền (user
,group
,domain
, hoặcanyone
). Quyền cótype=user
áp dụng cho một người dùng cụ thể trong khi quyền cótype=domain
áp dụng cho mọi người trong một miền cụ thể.role
– Trườngrole
xác định các thao tác màtype
có thể thực hiện. Ví dụ: một quyền vớitype=user
vàrole=reader
sẽ cấp cho một người dùng cụ thể quyền chỉ có thể đọc đối với tệp hoặc thư mục. Hoặc một quyền vớitype=domain
vàrole=commenter
cho phép mọi người trong miền thêm nhận xét vào tệp. Cho danh sách đầy đủ các vai trò và hoạt động mà mỗi vai trò được phép, hãy tham khảo Vai trò và quyền truy cập.
Khi tạo một quyền trong đó type=user
hoặc type=group
, bạn cũng phải
cung cấp một emailAddress
để buộc
người dùng hoặc nhóm cụ thể vào quyền.
Khi tạo một quyền trong đó type=domain
, bạn cũng phải cung cấp
domain
để liên kết một miền cụ thể
quyền đó.
Cách tạo quyền:
- Sử dụng phương thức
permissions.create
bằngfileId
cho tệp hoặc thư mục được liên kết. - Trong phần nội dung yêu cầu, hãy chỉ định
type
vàrole
. - Nếu là
type=user
hoặctype=group
, hãy cung cấpemailAddress
. Nếu giá trị làtype=domain
, hãy cung cấp mộtdomain
.
Hiển thị ví dụ
Mã mẫu sau đây cho biết cách tạo một quyền. Phản hồi trả về một thực thể của tài nguyên Permission
, bao gồm cả permissionId
được chỉ định.
Yêu cầu
POST https://www.googleapis.com/drive/v3/files/FILE_ID
/permissions
{ "requests": [ { "type": "user", "role": "commenter", "emailAddress": "alex@altostrat.com" } ] }
Đáp
{
"kind": "drive#permission",
"id": "PERMISSION_ID
",
"type": "user",
"role": "commenter"
}
Sử dụng đối tượng mục tiêu
Đối tượng mục tiêu là các nhóm người (chẳng hạn như các phòng ban hoặc nhóm) mà bạn có thể đề xuất cho người dùng chia sẻ các mục của họ. Bạn có thể khuyến khích người dùng chia sẻ các mục có đối tượng cụ thể hoặc hạn chế hơn thay vì toàn bộ tổ chức. Đối tượng mục tiêu có thể giúp bạn cải thiện tính bảo mật và quyền riêng tư của dữ liệu của bạn và giúp người dùng dễ dàng chia sẻ một cách phù hợp. Để biết thêm thông tin, hãy xem bài viết Giới thiệu về mục tiêu đối tượng của Google.
Cách sử dụng đối tượng mục tiêu:
Trong Bảng điều khiển dành cho quản trị viên của Google, hãy chuyển đến Trình đơn > Thư mục > Đối tượng mục tiêu.
Bạn phải đăng nhập bằng tài khoản có các đặc quyền của quản trị viên cấp cao để thực hiện việc này.
Trong Danh sách đối tượng mục tiêu, hãy nhấp vào tên của đối tượng mục tiêu. Người nhận để tạo đối tượng mục tiêu, hãy xem bài viết Tạo mục tiêu đối tượng người xem
Sao chép mã nhận dạng duy nhất từ URL đối tượng mục tiêu:
https://admin.google.com/ac/targetaudiences/ID
.Tạo quyền bằng
type=domain
và đặt trườngdomain
thànhID.audience.googledomains.com
.
Để xem cách người dùng tương tác với các đối tượng mục tiêu, hãy xem bài viết Trải nghiệm người dùng cho đường liên kết chia sẻ của Google.
Truy xuất tất cả các quyền đối với tệp, thư mục hoặc bộ nhớ dùng chung
Sử dụng phương thức permissions.list
để
truy xuất tất cả các quyền đối với tệp, thư mục hoặc bộ nhớ dùng chung.
Hiển thị ví dụ
Mã mẫu sau đây cho biết cách nhận tất cả các quyền. Phản hồi trả về một danh sách các quyền.
Yêu cầu
GET https://www.googleapis.com/drive/v3/files/FILE_ID
/permissions
Đáp
{
"kind": "drive#permissionList",
"permissions": [
{
"id": "PERMISSION_ID
",
"type": "user",
"kind": "drive#permission",
"role": "commenter"
}
]
}
Xác minh quyền của người dùng
Khi mở một tệp, ứng dụng của bạn phải kiểm tra các chức năng của tệp và hiển thị
giao diện người dùng để phản ánh quyền của người dùng hiện tại. Ví dụ: nếu người dùng
không có tính năng canComment
trên tệp, không thể nhận xét
nên tắt trong giao diện người dùng.
Để biết thêm thông tin về capabilities
, hãy xem bài viết Các tính năng
phần bên trên.
Để kiểm tra các chức năng, hãy gọi hàm files.get
bằng
fileId
và tham số fields
được đặt thành trường capabilities
. Cho
để biết thêm thông tin về việc trả về các trường bằng cách sử dụng tham số fields
, hãy xem
Trả về các trường cụ thể cho một tệp.
Hiển thị ví dụ
Mã mẫu sau đây cho biết cách xác minh quyền của người dùng. Phản hồi trả về danh sách chức năng mà người dùng có trên tệp. Mỗi chức năng tương ứng với một thao tác chi tiết mà người dùng có thể thực hiện. Một số trường chỉ được điền sẵn cho các mục trong bộ nhớ dùng chung.
Yêu cầu
GET https://www.googleapis.com/drive/v3/files/FILE_ID
?fields=capabilities
Đáp
{ "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 } }
Xác định nguồn của vai trò cho các tệp trong bộ nhớ dùng chung và thư mục
Để thay đổi vai trò trên tệp hoặc thư mục, bạn phải biết nguồn của vai trò. Đối với bộ nhớ dùng chung, nguồn của một vai trò có thể dựa trên tư cách thành viên của bộ nhớ dùng chung Drive, vai trò trên một thư mục hoặc vai trò trên tệp.
Để xác định nguồn của vai trò cho một bộ nhớ dùng chung hoặc các mục trong bộ nhớ dùng chung đó
lái xe, hãy gọi permissions.get
bằng phương thức
fileId
, permissionId
và tham số fields
được đặt thành
Trường permissionDetails
. Để tìm permissionId
, hãy sử dụng
permissions.list
với fileId
. Người nhận
tìm nạp trường permissionDetails
trên yêu cầu permissions.list
, đặt giá trị
tham số fields
sang permissions/permissionDetails
.
Trường này liệt kê tất cả các quyền đối với tệp được kế thừa và quyền truy cập trực tiếp đối với người dùng, nhóm hoặc miền.
Hiển thị ví dụ
Mã mẫu sau đây cho biết cách xác định nguồn vai trò. Phản hồi trả về permissionDetails
của tài nguyên Permission
. Trường inheritedFrom
cung cấp mã nhận dạng của mục mà quyền được kế thừa từ đó.
Yêu cầu
GET https://www.googleapis.com/drive/v3/files/FILE_ID
/permissions/PERMISSION_ID
?fields=permissionDetails&supportsAllDrives=true
Đáp
{
"permissionDetails": [
{
"permissionType": "member",
"role": "commenter",
"inheritedFrom": "INHERITED_FROM_ID
",
"inherited": true
},
{
"permissionType": "file",
"role": "writer",
"inherited": false
}
]
}
Thay đổi quyền
Để thay đổi quyền đối với tệp hoặc thư mục, bạn có thể thay đổi vai trò đã chỉ định:
Gọi
permissions.update
bằngpermissionId
cho quyền thay đổi vàfileId
cho tệp, thư mục hoặc bộ nhớ dùng chung. Để tìmpermissionId
, hãy sử dụngpermissions.list
vớifileId
.Trong yêu cầu, hãy xác định
role
mới.
Thậm chí, bạn có thể cấp quyền cho từng tệp hoặc thư mục trong bộ nhớ dùng chung
nếu người dùng hoặc nhóm đã là thành viên. Ví dụ: Alex có role=commenter
trong gói thành viên của họ trong một bộ nhớ dùng chung. Tuy nhiên, ứng dụng của bạn có thể cấp cho Alex
role=writer
cho một tệp trong bộ nhớ dùng chung. Trong trường hợp này, vì vai trò mới
thoải mái hơn vai trò được cấp thông qua tư cách thành viên,
quyền sẽ trở thành vai trò có hiệu lực đối với tệp hoặc thư mục đó.
Hiển thị ví dụ
Mã mẫu sau đây cho biết cách thay đổi các quyền đối với một tệp hoặc thư mục từ người nhận xét sang người ghi. Phản hồi trả về một thực thể của tài nguyên Permission
.
Yêu cầu
PATCH https://www.googleapis.com/drive/v3/files/FILE_ID
/permissions/PERMISSION_ID
{ "requests": [ { "role": "writer" } ] }
Đáp
{
"kind": "drive#permission",
"id": "PERMISSION_ID
",
"type": "user",
"role": "writer"
}
Thu hồi quyền truy cập vào tệp hoặc thư mục
Để thu hồi quyền truy cập vào tệp hoặc thư mục, hãy gọi
delete
bằng fileId
và
permissionId
để xoá quyền này.
Đối với các mục trong "Drive của tôi", bạn có thể xoá dữ liệu được kế thừa quyền. Việc xóa quyền được kế thừa sẽ thu hồi quyền truy cập vào mục và các mục con, nếu có.
Đối với các mục trong bộ nhớ dùng chung, bạn sẽ không thể thu hồi các quyền được kế thừa. Cập nhật hoặc hãy thu hồi quyền đối với tệp hoặc thư mục mẹ.
Thao tác delete
cũng dùng để xoá các quyền được áp dụng trực tiếp cho một
tệp hoặc thư mục trong bộ nhớ dùng chung.
Hiển thị ví dụ
Mã mẫu sau đây cho biết cách thu hồi quyền truy cập bằng cách xoá một permissionId
. Nếu thành công thì nội dung phản hồi sẽ trống. Để xác nhận rằng quyền đã bị xoá, hãy sử dụng permissions.list
với fileId
.
Yêu cầu
DELETE https://www.googleapis.com/drive/v3/files/FILE_ID
/permissions/PERMISSION_ID
Chuyển quyền sở hữu tệp cho một tài khoản Google Workspace khác trong cùng tổ chức
Quyền sở hữu các tệp hiện có trong "Drive của tôi" có thể chuyển từ một tài khoản Google Workspace sang một tài khoản khác trong cùng tổ chức. Một tổ chức sở hữu một miền dùng chung Drive sở hữu các tệp trong đó. Do đó, chúng tôi không hỗ trợ chuyển nhượng quyền sở hữu đối với các tệp và thư mục trong bộ nhớ dùng chung. Người tổ chức của một bộ nhớ dùng chung có thể di chuyển các mục từ bộ nhớ dùng chung đó và vào "Drive của tôi" riêng thiết bị nào chuyển quyền sở hữu cho họ.
Để chuyển quyền sở hữu một tệp trong "Drive của tôi", hãy thực hiện một trong những cách sau sau:
Tạo quyền đối với tệp bằng cách cấp cho một người dùng cụ thể (
type=user
) quyền truy cập của chủ sở hữu (role=owner
).Cập nhật quyền của một tệp hiện có bằng
role=owner
rồi chuyển quyền sở hữu cho người dùng được chỉ định (transferOwnership=true
).
Chuyển quyền sở hữu tệp từ tài khoản người dùng cá nhân này sang tài khoản người dùng thông thường khác
Bạn có thể chuyển quyền sở hữu tệp giữa các tài khoản người dùng thông thường. Tuy nhiên, Drive không chuyển quyền sở hữu một tệp giữa hai người tiêu dùng tài khoản cho đến khi chủ sở hữu mới tiềm năng đồng ý rõ ràng với việc chuyển. Cần chuyển quyền sở hữu tệp giữa các tài khoản người dùng thông thường:
Chủ sở hữu hiện tại bắt đầu quá trình chuyển quyền sở hữu bằng cách tạo hoặc cập nhật quyền của chủ sở hữu mới tiềm năng đối với tệp. Quyền phải bao gồm các chế độ cài đặt sau:
role=writer
,type=user
vàpendingOwner=true
. Nếu chủ sở hữu mới đang tạo giấy phép cho chủ sở hữu tiềm năng qua email sẽ được gửi đến chủ sở hữu mới tiềm năng cho biết rằng họ được yêu cầu giả định quyền sở hữu tệp.Chủ sở hữu mới chấp nhận yêu cầu chuyển nhượng quyền sở hữu bằng cách tạo hoặc cập nhật quyền truy cập tệp của họ. Quyền đó phải bao gồm các chế độ cài đặt sau:
role=owner
vàtransferOwnership=true
. Nếu chủ sở hữu mới đang tạo một quyền mới, hệ thống sẽ gửi thông báo qua email đến chủ sở hữu trước đó cho biết rằng quyền sở hữu đã được chuyển nhượng.
Khi một tệp được chuyển, vai trò của chủ sở hữu trước đó sẽ bị hạ cấp xuống writer
.
Thay đổi nhiều quyền bằng yêu cầu hàng loạt
Chúng tôi thực sự khuyên bạn nên sử dụng yêu cầu hàng loạt để sửa đổi nhiều quyền truy cập.
Sau đây là ví dụ về cách sửa đổi quyền hàng loạt bằng một thư viện ứng dụng.