使用驱动器API访问Google云端硬盘电子表格

时间:2014-10-18 07:13:21

标签: c# .net google-api google-spreadsheet-api google-drive-api

我想制作一个使用Google Drive API的网络应用程序来访问位于其Google云端硬盘上的朋友的电子表格。它将读取/写入工作表,但仅此而且只有该工作表。我只想说,过去两天我一直在阅读Google Drive API的文档,但几乎没有显示它。无论我阅读了多少个例子,我都无法理解它,因为API与示例所示的不匹配。我发现使用OAuth2.0进行身份验证时必须有4-5种不同的方式,但是没有一种方法可以使用我从NuGet包管理器获取的Drive API(这是Google说要获取最新API的地方)。没有任何意义。 OAuth2Parameters类并不存在,因此我不知道如何使用google给出的示例进行身份验证。类似的方式与其他示例(例如Google的DrEdit)的结果相同。谁能提供一些见解?电子表格将由我的朋友(我必要时)主持,网络应用程序将由免费服务托管,例如AppHarbor。非常感谢你。

1 个答案:

答案 0 :(得分:6)

我刚刚尝试了quickstart guide中的代码,并且使用Google.Apis.Drive.v2 nuget包完全没有任何问题。正如您所说,auth有很多不同的方法,而quckstart中的代码不适合Web应用程序,但它们都应该与最新的SDK一起提供。有关详细信息,请参阅web server authorization页面。

认为 OAuth2Parameters类属于Google API的“旧”gdata方法;使用它的示例可能是旧版本的Drive SDK。

我不想在我的测试中创建文件,因此我将示例代码改编为仅列出文件:

using System;
using System.Threading;

using Google.Apis.Auth.OAuth2;
using Google.Apis.Drive.v2;
using Google.Apis.Services;

class Test
{
    static void Main(string[] args)
    {
        UserCredential credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
            new ClientSecrets
            {
                ClientId = /* YOUR CLIENT ID HERE */,
                ClientSecret = /* YOUR CLIENT SECRET HERE */,
            },
            new[] { DriveService.Scope.Drive },
            /* USER TO AUTHORIZE */,
            CancellationToken.None).Result;

        var service = new DriveService(new BaseClientService.Initializer()
        {
            HttpClientInitializer = credential,
            ApplicationName = "Stack Overflow Drive test",
        });

        var response = service.Files.List().Execute();
        foreach (var item in response.Items)
        {
            Console.WriteLine(item.Title);
        }
    }
}