【问题标题】:google-drive-api method "drive.files.create" stopped working (V3 - 1.58.0.2859) and return nothinggoogle-drive-api 方法 \"drive.files.create\" 停止工作 (V3 - 1.58.0.2859) 并且不返回任何内容
【发布时间】:2022-12-18 16:32:31
【问题描述】:

我们有一个。网使用 Google Drive api 将文件上传到 g-drive 的应用程序。它几天前(11 月 29 日)就停止工作了。但我们不记得在那段时间做过任何改变。

在调查过程中,我们可以确认调用 Google API 的服务帐户是有效的,因为同一个服务帐户也被用于调用其他 Google API,并且工作正常。我们也可以确认这不是权限问题,因为我们甚至将 gdrive 的权限设置为允许拥有链接的“任何人”拥有编辑权限,但问题仍然存在。

不幸的是,我们找不到任何有用的日志,API 调用的返回信息是NULL。没有返回错误代码或错误消息。我们看到的唯一相关信息是:在“Error by API method”图表上,显示“drive.files.create”失败 100%。

一件有趣的事情是,如果我们禁用 Google Drive API,然后再次启用它,它会工作一次,然后会再次停止工作。

private string SaveFileToGoogleDrive(IFormFile file, string claimNumber)
        {
            try
            {
                var driveService = GetDriveServiceInstance();
                var fileMetadata = new Google.Apis.Drive.v3.Data.File();
                var mimeType = file.ContentType;
                fileMetadata.Name = CreateFileName(file.FileName, claimNumber);
                fileMetadata.MimeType = mimeType;
                fileMetadata.Parents = new List { _googleSettings.GoogleDriveFolderId };
                FilesResource.CreateMediaUpload request;
                using (var stream = new MemoryStream())
                {
                    file.CopyTo(stream);
                    request = driveService.Files.Create(fileMetadata, stream, mimeType);
                    request.Fields = "id";
                    request.Upload();
                }
                var googleFile = request.ResponseBody; \\The response body is always NULL, after the issue happened. :(
                return googleFile.Id;
            }
            catch(Exception ex)
            {
                _logger.Error($"Google Drive exception {ex.Message} SACKTRACE: {(ex.StackTrace ?? "")} INNER EXCEPTION: {(ex.InnerException != null ? ex.InnerException.Message + "STACK TRACE:" + ex.InnerException.StackTrace ?? "" : "")}");
                return string.Empty;
            }
        }

我们从响应对象中的 progress 属性中找到了更多详细信息,并看到错误消息“已超出用户的 Drive 存储配额。”,但这根本没有意义,因为我们使用的是“企业版”Google Workspace,这应该是没有限制的。服务帐户和密钥看起来不错,GCP 一点也不抱怨。这是我们在故障排除期间检查的第一件事。

您是否知道如何解决该问题或在调查此问题时还要寻找什么?

【问题讨论】:

  • 请编辑您的问题并包含一条错误消息,您怎么知道它不能正常工作?你将不得不在你的最后添加更多调试。它可以是任何东西,超时,空间不足。我会倾向于空间不足,因为重新创建它会修复它,直到你再次用完空间。尝试从服务帐户添加一个 about.get 并查看它还剩多少空间。
  • 谢谢你,就像我在原来的帖子中提到的那样,除了仪表板中显示的唯一证据 - “drive.files.create” 失败之外,没有记录任何错误,这很奇怪。

标签: google-api google-drive-api


【解决方案1】:

我们从响应对象的 progress 属性中找到了更多详细信息,并看到错误消息“已超出用户的 Drive 存储配额。”,但这根本没有意义,因为我们使用的是“企业版”google workspace,假设没有限制。服务帐户和密钥看起来不错,GCP 没有抱怨任何事情。这是我们在故障排除期间检查的第一件事。无论如何,解决方法是:创建一个新的服务帐户然后使用这个新服务帐户的新密钥,系统恢复工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-30
    相关资源
    最近更新 更多