2014-10-18 191 views
1

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

+0

我觉得你的痛,谷歌文档是我见过的最糟糕的并且很少保留,但这不是这种问题的格式 - 它太广泛了。从Nuget获取Google .NET客户端库,并为其获取Drive SDK。然后查看.NET客户端库Google代码网站上的文档。它们比官方所谓的“文档”要好得多 – CodingIntrigue 2014-10-18 07:17:19

+0

如果您指的是:https://code.google.com/p/google-api-dotnet-client/,那么恐怕所有的文档已经移到我刚才看到的那个页面......那个没有意义并且已经过时的页面。 – dangerisgo 2014-10-18 07:26:08

+0

更新电子表格,有2个选项: 1)google-apps-script(不需要Oauth2) 2)google-sparesheet-api https://developers.google.com/google-apps/spreadsheets/ - ---是的OAuth2的东西在痛苦中,每个人都看起来与它斗争。我从DrEdit中提取了我的OAuth2代码,非常混乱,但工作。 – eddyparkinson 2014-10-19 01:14:54

回答

6

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

I 认为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); 
     } 
    } 
} 
+0

谢谢你的回复。在我的情况下,<用户授权>将是什么?它会是一个用户名吗?一个Access API? – dangerisgo 2014-10-18 07:46:50

+0

@dangerisgo:嗯,我把它设置到我的电子邮件地址......我承认这并不完全清楚这与我在浏览器中获得的用户选择相对应 - 但如果您正在编写Web应用程序,没什么关系。这是一个很好的起点,可以检查一切正在发挥作用。 – 2014-10-18 07:58:46

+0

这是我的网络应用的绝佳起点。非常感谢你的帮助Jon! – dangerisgo 2014-10-18 08:10:04

相关问题