【发布时间】:2019-04-05 08:47:09
【问题描述】:
我已经设置了一个 C# 应用程序,该应用程序当前成功连接 Google Drive、列出文件、下载文件并读取其内容。到目前为止很好,但现在我需要能够修改文件,我发现由于某种原因,这并没有发生。我相信我在进行身份验证时使用了正确的范围,并且测试了许多组合都无济于事。当它点击“updateRequest.Execute()”时,我继续收到以下错误:
下面提供了我用于验证的代码:
string[] scopes = { DriveService.Scope.Drive };
UserCredential credentials;
using (var stream = new FileStream(RESOURCE_DIRECTORY + "\\google_credentials_v2.json", FileMode.Open, FileAccess.Read))
{
string credPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
credPath = Path.Combine(credPath, ".credentials/drive-dotnet-quickstart.json");
credentials = GoogleWebAuthorizationBroker.AuthorizeAsync(
GoogleClientSecrets.Load(stream).Secrets,
scopes,
"user",
CancellationToken.None,
new FileDataStore(credPath, true)).Result;
}
return credentials;
我用来修改文件的代码如下:
public static void MoveFileToNewFolder(DriveService service, string folderName, string fileId, string previousParents = "")
{
FilesResource.UpdateRequest updateRequest = service.Files.Update(new Google.Apis.Drive.v3.Data.File(), fileId);
updateRequest.Fields = "id, parents";
updateRequest.AddParents = GetFolderIDFromName(service, folderName);
updateRequest.RemoveParents = previousParents;
updateRequest.Execute();
}
需要注意的重要事项:
- 当我在 google api 中设置访问权限时,我经过身份验证的应用程序注册为“其他”
- 我使用的 DriveService.Scope 是“DriveService.Scope.Drive”
- 我已经成功下载文件了
- 我没有通过此应用程序添加要修改的文件
我不确定是否需要将其设置为服务帐户,但据我了解范围,我应该能够修改文件。我的要求是能够下载和修改驱动器中的所有文件和文件夹,无论其来源如何。
提前谢谢你!
【问题讨论】:
标签: c# google-api google-drive-api google-oauth google-api-dotnet-client