1

自 10 月以来,我一直在使用 Google Drive SDK 集成。从那以后它一直运行良好,自从我开始工作以来,我没有修改项目中的代码。今天,由于某种未知的原因,每个下载或上传文件到驱动器的请求都会返回一个错误:

远程服务器返回错误 (401) 未授权。

我目前正在处理的代码部分是:

    public static Stream GetDownloadStream(string id)
    {
        File file = DriveService.Files.Get(id).Fetch();
        if (!String.IsNullOrEmpty(file.DownloadUrl))
        {
            Stream stream;
            var request = (HttpWebRequest) WebRequest.Create(
                new Uri(file.DownloadUrl));
            Auth.ApplyAuthenticationToRequest(request);
            try
            {
                var response = (HttpWebResponse)request.GetResponse();
                if (response.StatusCode == HttpStatusCode.OK)
                {
                    stream = response.GetResponseStream();
                }
                else
                {
                    throw new Exception(response.StatusDescription);
                }
                return stream;
            }
            catch(Exception e)
            {
                GetCredentials();
                return GetDownloadStream(id);
            }
        }
        throw new Exception("File Cannot Be Downloaded.");
    }

在 request.GetResponse() 方法调用中返回错误。DriveService 正确加载文件,并且该文件具有格式正确的 DownloadURL。DriveService 的所有内容似乎都可以在其余代码中运行,它可以正确搜索和检索文件信息,但由于某种原因,它不会下载或上传。我需要合并到我的代码中的谷歌服务器端的 DownloadURL 的格式是否发生了一些变化?

4

2 回答 2

1

您是否禁用了网络安全?似乎谷歌驱动器正在检查那个。

--禁用网络安全

如果是这样,请启用网络安全。它对我有用。

于 2015-03-16T17:14:21.697 回答
0

有时 downloadurl 已过期,以便有时间创建新请求并再次下载文件。也是因为不正确的刷新令牌和访问令牌。

于 2014-09-04T11:44:09.243 回答