【问题标题】:Accessing Google Drive from Windows service从 Windows 服务访问 Google Drive
【发布时间】:2012-09-08 16:04:40
【问题描述】:

我正在尝试了解是否可以在不涉及用户的情况下从传统的 Windows 服务访问 Google 云端硬盘。

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

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

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

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

【问题讨论】:

    标签: windows-services oauth-2.0 google-drive-api


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多