我想制作一个使用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驱动器电子表格
回答
我刚刚尝试了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);
}
}
}
谢谢你的回复。在我的情况下,<用户授权>将是什么?它会是一个用户名吗?一个Access API? – dangerisgo 2014-10-18 07:46:50
@dangerisgo:嗯,我把它设置到我的电子邮件地址......我承认这并不完全清楚这与我在浏览器中获得的用户选择相对应 - 但如果您正在编写Web应用程序,没什么关系。这是一个很好的起点,可以检查一切正在发挥作用。 – 2014-10-18 07:58:46
这是我的网络应用的绝佳起点。非常感谢你的帮助Jon! – dangerisgo 2014-10-18 08:10:04
- 1. 官方Google电子表格/驱动器使用情况
- 2. 如何使用驱动器API和GAS发布电子表格
- 3. 在JavaScript中访问谷歌驱动器电子表格
- 4. Google电子表格中Google驱动器中的参考文件
- 5. Google驱动器电子表格和日历邀请嘉宾
- 6. PHP谷歌驱动器API创建电子表格
- 7. Authless访问谷歌驱动器api
- 8. 如何使用Google驱动器API密钥从Android应用程序访问驱动器内容?
- 9. 使用驱动器sdk阅读谷歌电子表格
- 10. LINQ访问驱动器
- 11. 无法访问“驱动器:”
- 12. Google驱动器transferOwnership
- 13. 使用mysqldump访问C驱动器
- 14. 在C++中访问UNC驱动器/远程网络驱动器
- 15. 新电子表格在使用.NET API的谷歌驱动器中不可见
- 16. gspread是否支持访问团队驱动器上的电子表格?
- 17. 驱动器sdk插入电子表格csv格式
- 18. Google驱动器文件预览api
- 19. Google驱动器API和服务帐户
- 20. Google驱动器v2 api示例
- 21. PHP访问服务器驱动器
- 22. 谷歌驱动器电子表格错误阅读工作表
- 23. 如何使用Google驱动器api v3&php在谷歌驱动器中创建子目录(文件夹)?
- 24. 获取Google驱动器子文件夹
- 25. 使用VBA上传到Google驱动器?
- 26. Google驱动器 - 如何使用php
- 27. 刷新Google驱动器access__token
- 28. 在iframe中使用api访问令牌的Google驱动器文件预览
- 29. 谷歌驱动器电子表格:结合IF和VLOOKUP
- 30. 将驱动器文件ID导出到电子表格
我觉得你的痛,谷歌文档是我见过的最糟糕的并且很少保留,但这不是这种问题的格式 - 它太广泛了。从Nuget获取Google .NET客户端库,并为其获取Drive SDK。然后查看.NET客户端库Google代码网站上的文档。它们比官方所谓的“文档”要好得多 – CodingIntrigue 2014-10-18 07:17:19
如果您指的是:https://code.google.com/p/google-api-dotnet-client/,那么恐怕所有的文档已经移到我刚才看到的那个页面......那个没有意义并且已经过时的页面。 – dangerisgo 2014-10-18 07:26:08
更新电子表格,有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