Windows services 从Windows服务访问Google Drive

Windows services 从Windows服务访问Google Drive,windows-services,oauth-2.0,google-drive-api,Windows Services,Oauth 2.0,Google Drive Api,我试图了解是否有可能在不涉及用户的情况下从传统的Windows服务访问Google驱动器 按照上面的指南,我已经能够创建一个命令行应用程序,将文件上传到GoogleDrive。但是,该应用程序启动web浏览器并将我重定向到Google的授权服务器页面,该页面为我提供了必须在命令行应用程序中输入的授权代码。显然,对于一个作为Windows服务运行的应用程序来说,这是行不通的,该应用程序将尝试在不同的时间将文件上传到Google Drive。在我的场景中,用户不可能多次参与,这将在设置期间进行 据我

我试图了解是否有可能在不涉及用户的情况下从传统的Windows服务访问Google驱动器

按照上面的指南,我已经能够创建一个命令行应用程序,将文件上传到GoogleDrive。但是,该应用程序启动web浏览器并将我重定向到Google的授权服务器页面,该页面为我提供了必须在命令行应用程序中输入的授权代码。显然,对于一个作为Windows服务运行的应用程序来说,这是行不通的,该应用程序将尝试在不同的时间将文件上传到Google Drive。在我的场景中,用户不可能多次参与,这将在设置期间进行

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

在中,有可能的身份验证场景的描述。唯一与我尝试做的匹配的场景是“服务帐户”场景。这允许应用程序在不涉及用户的情况下访问Google服务。但是,根据相同的页面,使用服务帐户的应用程序无法访问数据


我得到的印象是,谷歌不想为旧式身份验证(用户名/密码)而烦恼,因为这可能会导致安全问题。从安全角度来看,存储用户/传入配置当然不是很好。“快速启动”应用程序是一个简化的命令行应用程序,它简化了一些步骤以加快入门体验,但它仍然可以作为Windows服务的起点

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

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

文档还包括一个完整的.NET应用程序,该应用程序显示了如何存储令牌以及如何解决各种授权边缘情况: