我正在使用GoogleWebAuthorizationBroker.AuthenticationAsync((为GoogleDrive的用户授权。
它可以在控制台或UI应用程序中正常工作,但如果该方法在Windows服务的上下文中执行,则会挂起,即使我之前在控制台模式中获得授权,并且JSON数据存储在提供的FileDataStore中。
我的代码如下:
ClientSecrets secrets = new ClientSecrets { ClientId = CLIENT_ID, ClientSecret = CLIENT_SECRET };
FileDataStore store = new FileDataStore("MyFolder");
UserCredential credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
secrets,
new string[] {
DriveService.Scope.DriveFile,
DriveService.Scope.Drive,
"user",
CancellationToken.None,
store).Result;
这个方法在Windows服务下根本不起作用,还是我遗漏了什么?
在Windows服务下,是否有其他方式授权用户?(对于这种情况,我对ServiceAccountCredential不感兴趣(。
提前谢谢。
试试这个:开放服务。转到服务的"属性"。在"登录"选项卡下,选中"允许服务与桌面交互"。
这是任何服务执行任何与UI相关的操作所必需的。