用.net打开谷歌电子表格
本文关键字:谷歌 电子表格 net | 更新日期: 2023-09-27 17:52:46
我正在开发一个通过.net访问谷歌电子表格的工具。它使用旧的身份验证方式,直到谷歌关闭它们。现在,我修改为使用OAuth2,并生成了一个有效的访问令牌。
问题:即使使用了访问令牌,我一尝试获取电子表格就会收到一个Bad Request 400。
以下是我如何设置服务和构建查询的代码:
var documentService = new DocumentsService("documents");
var requestFactory = new GDataRequestFactory(null);
requestFactory.CustomHeaders.Add("Authorization: Bearer " + accessToken);
documentService.RequestFactory = requestFactory;
var query = new SpreadsheetQuery { Title = name };
var feed = documentService.Query(uri);
我还尝试使用SpreadsheetsService,并将访问令牌直接添加到查询中。然后查询的Uri如下所示:
https://docs.google.com/feeds/default/private/full?category=spreadsheet&title={speadsheetName}&access_token={access_token}
无论哪种方式,我总是收到"Bad Request 400"的回复。有人能帮我弄清楚这里出了什么问题吗?
谢谢!
编辑:由于访问电子表格的代码在更新到OAuth2时没有改变,并且访问令牌是有效的,我的最佳猜测是服务用户/开发人员项目错过了一些权限或类似的东西。但不知道在哪里解决。
第二版:我发现访问令牌可以很好地与新的api url配合使用,但不能与旧的api调用配合使用。不幸的是,我无法在我的环境中使用新的Google SDK,因为我被限制在.NET 3.5或更低版本。也许有一个选项可以让服务用户使用旧的api调用或类似的东西?
我找到了问题的解决方案:
DocumentsService
接缝(不再(工作,至少对我来说是这样。使用SpreadsheetsService
并确保使用SpreadsheetsService.SpreadsheetQuery
而不是DocumentsService.SpreadsheetService
解决了这个问题。第二个在我的情况下隐藏得很好。