使用Google服务账号上传文件至Google Drive失败求助
针对你遇到的.NET 6上传Google Drive时出现NotFound异常的问题,结合「贡献者权限失效、免费版编辑权限正常」的情况,整理以下排查和解决步骤:
确认文件夹ID的准确性
异常信息里的1JlGO5gas321321(testId)需注意:实际使用的文件夹ID必须是纯字符串,不能包含括号、备注等额外字符。检查代码中传入的driveFolderId是否是目标文件夹的真实ID(可从Google Drive网页端URL提取,格式为https://drive.google.com/drive/folders/[此处为ID])。检查贡献者权限的实际范围
Google Workspace中的「贡献者」权限和免费版「编辑」权限存在差异:贡献者默认仅能编辑现有文件,无法创建新文件。若目标文件夹在Workspace环境中,需将服务账号权限升级为「编辑」,或在Workspace后台调整贡献者权限设置,允许创建文件。验证服务账号的API权限范围
确保服务账号使用的OAuth授权范围包含https://www.googleapis.com/auth/drive(全权限)或https://www.googleapis.com/auth/drive.file(基于共享的权限)。若使用drive.file,需确认目标文件夹已共享给服务账号邮箱(格式一般为[服务账号ID]@[项目ID].iam.gserviceaccount.com),且共享状态已生效(可能需等待1-2分钟)。测试服务账号对文件夹的访问性
在代码中添加测试逻辑,验证服务账号能否读取目标文件夹:try { var folder = await driveService.Files.Get(driveFolderId).ExecuteAsync(); Console.WriteLine($"Folder found: {folder.Name}"); } catch (Exception ex) { Console.WriteLine($"Failed to access folder: {ex.Message}"); }若这段代码也抛出
NotFound异常,说明服务账号确实无法访问该文件夹,需重新检查共享操作:确认服务账号邮箱输入正确,共享时选择的是「服务账号」而非普通用户,且共享权限已正确应用。排查团队盘的特殊情况
若目标文件夹属于Google团队盘(Team Drive),服务账号需被添加为团队盘成员(至少拥有「内容管理器」权限),仅共享单个文件夹可能无法生效。需在团队盘成员设置中添加服务账号,并分配合适权限。
内容的提问来源于stack exchange,提问作者Emil

