我试图了解是否可以在不涉及用户的情况下从传统的 Windows 服务访问 Google Drive。
按照https://developers.google.com/drive/quickstart上的指南,我已经能够创建一个将文件上传到 Google Drive 的命令行应用程序。但是,此应用程序会启动 Web 浏览器并将我重定向到 Google 的授权服务器页面,该页面为我提供了我必须在命令行应用程序中输入的授权代码。显然,这不适用于作为 Windows 服务运行的应用程序,它将尝试在不同时间将文件上传到 Google Drive。在我的场景中,根本不可能让用户多次参与,而那将是在设置期间。
据我所知,授权码只在短时间内有效。如果我稍后尝试重用它,我会遇到异常。
在https://developers.google.com/accounts/docs/OAuth2,有可能的身份验证方案的描述。与我正在尝试做的事情相匹配的唯一场景是“服务帐户”场景。这允许应用程序在不涉及用户的情况下访问 Google 服务。但是,使用服务帐户的同一页面应用程序无法访问数据。
我的印象是,由于这可能导致安全问题,谷歌不想打扰旧式身份验证(用户名/密码)。从安全的角度来看,在配置中存储用户/密码当然不是很好。我是否遗漏了什么,或者我想要做的事情根本不受支持?