【发布时间】:2015-08-09 21:09:30
【问题描述】:
所以我正在尝试将此公共工作表导出为 CSV。
我了解到我可以使用以下模式,只需在我的浏览器中(无需登录谷歌):
https://spreadsheets.google.com/feeds/download/spreadsheets/Export?key={0}&exportFormat=csv
这很棒,而且看起来很简单。但是,当我尝试在我的应用程序中执行此操作时,它似乎希望我登录。和登录过程,我无法上班。
我尝试了多种解决方案。使用旧的身份验证方法,我设法得到这样的工作:
var spreadsheetService = new SpreadsheetsService(name);
var csv = string.Empty;
using (var sr = new StreamReader(spreadsheetService.Query(exportUrl)))
{
csv = sr.ReadToEnd();
}
这很好用,但现在凭据已移至 OAuth,这不再适用于我。我无法找到将 OAuth 凭据添加到此方法的方法。
因此,我尝试按照示例进行操作,结果如下:
var certificate = new X509Certificate2(data, "notasecret", X509KeyStorageFlags.Exportable);
var credential = new ServiceAccountCredential(
new ServiceAccountCredential.Initializer(serviceEmail)
{
Scopes = new[] { PlusService.Scope.PlusMe }
}.FromCertificate(certificate));
credential.RequestAccessTokenAsync(System.Threading.CancellationToken.None).Wait();
var service = new PlusService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = "My app",
});
这似乎确实有效,但我不知道下一步是什么。如何在 PlusService 上执行我的导出查询?甚至可能吗?我可以改为将 OAuth 凭据添加到 SpreadsheetService 吗?
【问题讨论】:
标签: c# google-sheets gdata google-spreadsheet-api