Google api Google API 1.8.1-GoogleWebAuthorizationBroker.AuthorizationAsync在Windows服务下挂起

Google api Google API 1.8.1-GoogleWebAuthorizationBroker.AuthorizationAsync在Windows服务下挂起,google-api,google-oauth,google-api-dotnet-client,Google Api,Google Oauth,Google Api Dotnet Client,我正在使用GoogleWebAuthorizationBroker.AuthorizationAsync()为GoogleDrive授权用户 它在控制台或UI应用程序中正常工作,但如果该方法在Windows服务的上下文中执行,则会挂起,即使我以前在控制台模式下获得过授权,并且JSON数据存储在提供的FileDataStore中 我的代码如下: ClientSecrets secrets = new ClientSecrets { ClientId = CLIENT_ID, ClientSecre

我正在使用GoogleWebAuthorizationBroker.AuthorizationAsync()为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相关的操作所必需的。

您可以调用异步模式吗?(我的意思是使用async await,甚至是ContinueWith)peleyal,并不是“AuthorizeAsync”方法的目的是异步的吗?peleyal,实际上示例代码实际上是从Task.Start()中调用的,因此它是异步运行的。你还有其他建议吗?谢谢。找到一个原因:这是因为UI授权是从一个用户帐户执行的,而服务是在另一个用户帐户下运行的。它在Windows服务中工作吗。我也面临同样的问题。有人能帮忙解决这个问题吗