使用google drive SDK下载文件

本文关键字:下载 文件 SDK drive google 使用 | 更新日期: 2023-09-27 18:13:50

我遵循了这个例子:

using Google.Apis.Authentication;
using Google.Apis.Drive.v2;
using Google.Apis.Drive.v2.Data;
......
......

/// <summary>
        /// Download a file and return a string with its content.
        /// </summary>
        /// <param name="authenticator">
        /// Authenticator responsible for creating authorized web requests.
        /// </param>
        /// <param name="file">Drive File instance.</param>
        /// <returns>File's content if successful, null otherwise.</returns>
        private System.IO.Stream DownloadFile(IAuthenticator authenticator, Google.Apis.Drive.v2.Data.File file)
        {
            if (!String.IsNullOrEmpty(file.DownloadUrl))
            {
                try
                {
                    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(
                        new Uri(file.DownloadUrl));
                    authenticator.ApplyAuthenticationToRequest(request);
                    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                    if (response.StatusCode == HttpStatusCode.OK)
                    {
                        return response.GetResponseStream();
                    }
                    else
                    {
                        Console.WriteLine(
                            "An error occurred: " + response.StatusDescription);
                        return null;
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine("An error occurred: " + e.Message);
                    return null;
                }
            }
            else
            {
                // The file doesn't have any content stored on Drive.
                return null;
            }
        }

但是无法找到使用Google.Apis.Authentication的命名空间因此输入参数IAuthenticator authenticator无法解析。

我已经从Nuget安装了

Google api Client Library

Google.api.drive。v2 Client Library

使用google drive SDK下载文件

不幸的是,我有同样的问题,你已经描述和API文档没有给什么IAuthenticator是足够的信息。正如rajanmhr47所说,它不再被支持,将被移除。

解决方案如下:

假设你有一个DriveService实例变量,你用它来认证到Google Drive API服务器,你可以这样使用它来下载一个文件,你有权限:

注意:这些方法不实现任何错误检查。

异步版本:

public static async Task<byte[]> DownloadFile(DriveService driveService, string fileId)
{
    var file = await driveService.Files.Get(fileId).ExecuteAsync();
    return await driveService.HttpClient.GetByteArrayAsync(file.DownloadUrl);
}
同步版本:

public static byte[] DownloadFile(DriveService driveService, string fileId)
{
    var file = driveService.Files.Get(fileId).Execute();
    return driveService.HttpClient.GetByteArrayAsync(file.DownloadUrl).Result;
}

在这个链接中提到IAuthenticator不再被支持,它将在1.7.0测试版中被删除。考虑使用新的Google.Apis.Auth NuGet包中的UserCredential或ServiceAccountCredential,该包支持。net 4、。net for Windows、商店应用程序、Windows Phone 7.5和8以及可移植类库