使用Google Service Account设置文件权限时遇不当内容标记错误
问题:通过Google服务账号上传文件到Drive后无法添加权限,提示文件被标记为不当内容
通过Google Service Account将文件上传至Google Drive,文件上传成功,但在为相关利益相关者添加权限时,出现错误:
"message": "Bad Request. User message: "You cannot share this item because it has been flagged as inappropriate.""
代码片段
// create and return credential private static Credential getCredentials2() throws IOException { java.io.File serviceAccountCredsFile = new java.io.File("creds.json"); @SuppressWarnings("deprecation") GoogleCredential credential = GoogleCredential.fromStream(new FileInputStream(serviceAccountCredsFile)) .createScoped(SCOPES); return credential; } // build and return an authorized drive client service public static List<File> getDriveService() throws Exception { final NetHttpTransport HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport(); // Instantiating a client Drive service = new Drive.Builder(HTTP_TRANSPORT, JSON_FACTORY, getCredentials2()) .setApplicationName(APPLICATION_NAME) .build(); System.out.println("Successfully created the Drive service!!!!!!!!!!!!!!!!!!!!"); /***************************Uploading file on Google Drive Start*********************************/ File fileMetadata = new File(); fileMetadata.setName("1stFile.csv"); fileMetadata.setParents(Collections.singletonList("10Tt3rfkaeHr1JOUQYRPTfqQQ2jdDJcy")); fileMetadata.setDescription("Testing upload"); fileMetadata.setMimeType("application/csv"); java.io.File fileTobeUploaded = new java.io.File("custid.csv"); FileInputStream inputStream = new FileInputStream(fileTobeUploaded); InputStreamContent mediaContent = new InputStreamContent("application/csv", inputStream); try { File uploadedFile = service.files().create(fileMetadata, mediaContent) .setSupportsAllDrives(true) .execute(); com.google.api.services.drive.model.Permission newPermission = new com.google.api.services.drive.model.Permission() ; newPermission.setType("user"); newPermission.setRole("writer"); newPermission.setEmailAddress("xyz@xyz.com"); service.permissions().create(createdFileId, newPermission) .setSupportsAllDrives(true) .execute(); }
错误详情
执行service.permissions().create()后收到以下400错误:
400 Bad Request POST https://www.googleapis.com/drive/v3/files/16-wFWifo0HNZW6W1lujJiT1HO-1wLbK/permissions?supportsAllDrives=true { "code": 400, "errors": [ { "domain": "global", "message": "Bad Request. User message: "You cannot share this item because it has been flagged as inappropriate."", "reason": "invalidSharingRequest" } ], "message": "Bad Request. User message: "You cannot share this item because it has been flagged as inappropriate."" }
解决建议
- 检查文件内容合规性:Google Drive的自动检测系统可能标记了文件中的敏感内容(如违规信息、恶意代码、侵权内容等)。手动将该文件上传至普通Drive账号并尝试分享,确认是否因内容触发限制。
- 验证共享盘政策:若文件上传至团队共享盘,检查共享盘的内容政策是否限制敏感内容分享,同时确认服务账号是否具备足够权限绕过此类限制。
- 提交误判申诉:若确认文件内容合规,可通过Google Workspace管理员后台或Drive内置申诉渠道,针对被标记文件提交申诉,说明文件用途与合规性,请求解除分享限制。
- 更换账号测试:使用普通用户账号上传同一文件并尝试分享,对比结果排查是否为服务账号环境导致的误判。
- 调整文件元数据:文件名或描述中的敏感关键词也可能触发检测,尝试修改文件名(移除疑似敏感词汇)和描述后重新上传测试。
内容的提问来源于stack exchange,提问作者Ankur Jangra
相关产品推荐
相关产品推荐

