c# - 使用 .net 打开 Google 电子表格

标签 c# .net google-sheets-api bad-request

我正在开发一种通过 .net 访问 Google 电子表格的工具。它使用旧的身份验证方式,直到谷歌将其关闭。现在我重新设计以使用 OAuth2 并生成了有效的访问 token 。

问题:即使使用访问 token ,当我尝试获取电子表格时,我也会收到错误请求 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 并将访问 token 直接添加到查询中。那么查询的 Uri 如下所示:

https://docs.google.com/feeds/default/private/full?category=spreadsheet&title={speadsheetName}&access_token={access_token}

无论哪种方式,我都会不断收到“错误请求 400”响应。 谁能帮我弄清楚这里出了什么问题吗?

谢谢!

编辑:由于访问电子表格的代码没有因 OAuth2 的更新而改变,并且访问 token 有效,我最好的猜测是服务用户/开发人员项目错过了某些权限或类似的内容。但不知道在哪里解决这个问题。

EDIT-2:我发现访问 token 适用于新的 api url,但不适用于旧的 api 调用。不幸的是,我无法在我的环境中使用新的 Google SDK,因为我仅限于 .NET 3.5 或更低版本。也许有一个选项可以让服务用户使用旧的 api 调用或类似的东西?

最佳答案

我找到了问题的解决方案:

DocumentsService 似乎不再起作用了,至少对我来说是这样。使用 SpreadsheetsService 并确保使用 SpreadsheetsService.SpreadsheetQuery 而不是 DocumentsService.SpreadsheetService 可以解决该问题。第二个在我的箱子里隐藏得很好。

关于c# - 使用 .net 打开 Google 电子表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30596885/

相关文章:

c# - Visual Studio 中的 Entity Framework : database is not created with DbContext base constructor

c# - WIX-- 自动更新

c# - Owin Bearer Token 认证 + 授权 Controller

.net - Pulumi InputMap<string> - 如何使用资源输出作为键?

Java Google SpreadSheet API,如何更新单元格以添加注释?

c# - NHibernate 错误消息 : object references an unsaved transient instance - save the transient instance before flushing

.net - DateTime.ToUniversalTime 和 TimeZoneInfo.ConvertTimeToUtc 之间有什么区别

.net - 关于 MVC 应用程序有意义的 URL 格式的建议

java - Google 电子表格 key 版本

java - 在 Firebase 身份验证后访问用户谷歌表格