C# Google API 身份验证

C# Google API Authentication

我遇到一个问题,当 运行ning 作为控制台应用程序时,我可以进行身份​​验证。但是当我将它设为 Windows 服务并安装它时,我无法进行身份验证。我已经使用日志调试语句来隔离问题。

UserCredential credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
        new ClientSecrets {
            ClientId = "myClientId",
            ClientSecret = "myClientSecret"
        },
        new[] {
            CalendarService.Scope.Calendar
        },
        "myProjectName",
        CancellationToken.None,
        new FileDataStore("myProjectName")
).Result;

问题出在上面的语句上。它被 try/catch 包围,但没有抛出异常。紧随其后的是一条日志语句,但从未执行过。我最好的猜测是问题出在 FileDataStore 上。默认情况下,Google 存储这是 %AppData%,当我手动 运行 时,我的程序可以找到它,但是当它是 Web 服务时,我被迫给它一个帐户类型,如本地系统或本地服务我需要将其设置为我认为的用户。我的猜测是这会阻止它在 %AppData% 中找到文件。有人对如何帮助 Windows 服务找到 %AppData% 有任何建议吗?或者在这种情况下 Windows 服务是一种糟糕的方法吗?

提前感谢您的帮助。

仅当您拥有 UI 时,使用此方法才有效,因为它会启动浏览器以请求身份验证。对于服务,您必须要求另一种密钥,这意味着在服务器中安装证书。在OAuth2ServiceAccount.

中有解释