1

我试图了解是否可以在不涉及用户的情况下从传统的 Windows 服务访问 Google Drive。

按照https://developers.google.com/drive/quickstart上的指南,我已经能够创建一个将文件上传到 Google Drive 的命令行应用程序。但是,此应用程序会启动 Web 浏览器并将我重定向到 Google 的授权服务器页面,该页面为我提供了我必须在命令行应用程序中输入的授权代码。显然,这不适用于作为 Windows 服务运行的应用程序,它将尝试在不同时间将文件上传到 Google Drive。在我的场景中,根本不可能让用户多次参与,而那将是在设置期间。

据我所知,授权码只在短时间内有效。如果我稍后尝试重用它,我会遇到异常。

https://developers.google.com/accounts/docs/OAuth2,有可能的身份验证方案的描述。与我正在尝试做的事情相匹配的唯一场景是“服务帐户”场景。这允许应用程序在不涉及用户的情况下访问 Google 服务。但是,使用服务帐户的同一页面应用程序无法访问数据。

我的印象是,由于这可能导致安全问题,谷歌不想打扰旧式身份验证(用户名/密码)。从安全的角度来看,在配置中存储用户/密码当然不是很好。我是否遗漏了什么,或者我想要做的事情根本不受支持?

4

1 回答 1

2

快速启动应用程序是一个简化的命令行应用程序,它减少了一些角落以加快入门体验,但它仍然可以用作 Windows 服务的起点。

如果您不想启动浏览器,则必须删除对的调用,Process.Start(authUri.ToString())并可能将授权 url 打印到控制台,以便用户可以复制链接。

您只需执行一次此手动步骤,只要应用程序存储刷新令牌和交换访问码时返回的访问令牌即可。访问令牌在一小时后过期,但刷新令牌永不过期(除非用户手动撤销对应用程序的访问权限),后者是用于请求新访问令牌的令牌。

该文档还包括一个完整的 .NET 应用程序,该应用程序展示了如何存储令牌以及如何解决各种授权边缘情况:https ://developers.google.com/drive/examples/dotnet

于 2012-09-08T17:18:33.940 回答