Java Drive API:如何为共享文件添加指定用户权限
解决方法:给Google Drive上传文件添加特定用户权限
你的代码已经实现了公开可读权限,要添加特定用户权限,只需要在创建完公开权限后,再创建针对目标用户的Permission对象并调用API添加即可。
关键修改点:
- 针对特定用户,需将
Permission的type设为"user",并指定用户的emailAddress - 可以批量添加多个用户,循环调用权限创建接口即可
修改后的完整代码:
public Task<String> uploadFileToGoogleDrive(String path) { if (folderId.isEmpty()) { Log.e(TAG, "uploadFileToGoogleDrive: folder id not present"); isFolderPresent().addOnSuccessListener(id -> folderId = id) .addOnFailureListener(exception -> Log.e(TAG, "Couldn't create file.", exception)); } return Tasks.call(mExecutor, () -> { java.io.File filePath = new java.io.File(path); File fileMetadata = new File(); fileMetadata.setName(filePath.getName()); fileMetadata.setParents(Collections.singletonList(folderId)); fileMetadata.setMimeType(Utils.getFileMimeType(filePath)); FileContent mediaContent = new FileContent(Utils.getFileMimeType(filePath), filePath); File file = mDriveService.files().create(fileMetadata, mediaContent) .setFields("id") .setIncludePermissionsForView("published") .execute(); Log.i(TAG, "uploadFileToGoogleDrive: " + " File ID: " + file.getId()); // 1. 设置公开可读权限(保留原有逻辑) Permission publicPermission = new Permission(); publicPermission.setType("anyone"); publicPermission.setRole("reader"); mDriveService.permissions().create(file.getId(), publicPermission).execute(); // 2. 添加单个特定用户权限(替换为目标用户邮箱) String targetUserEmail = "example@domain.com"; Permission userPermission = new Permission(); userPermission.setType("user"); userPermission.setRole("reader"); // 可按需改为"writer"或"owner" userPermission.setEmailAddress(targetUserEmail); mDriveService.permissions().create(file.getId(), userPermission).execute(); // 3. 批量添加多个用户的示例 List<String> targetUserEmails = Arrays.asList("user1@domain.com", "user2@domain.com"); for (String email : targetUserEmails) { Permission batchPermission = new Permission(); batchPermission.setType("user"); batchPermission.setRole("reader"); batchPermission.setEmailAddress(email); mDriveService.permissions().create(file.getId(), batchPermission).execute(); } return file.getId(); }); }
注意事项:
- 确保API授权范围包含
https://www.googleapis.com/auth/drive,若仅操作自身上传的文件,drive.file+drive.permissions组合也可 - 若要添加谷歌群组权限,将
type设为"group"并传入群组邮箱即可 - 遇到权限错误时,检查OAuth2令牌的权限范围是否正确,以及目标用户邮箱是否有效
内容的提问来源于stack exchange,提问作者mekanix
相关产品推荐
相关产品推荐

