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.
中有解释
我遇到一个问题,当 运行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.
中有解释