使用.net打开Goog​​le电子表格

时间:2015-06-02 13:00:56

标签: c# .net google-spreadsheet-api bad-request

我正在开发一种通过.net访问谷歌电子表格的工具。它使用旧的身份验证方式,直到谷歌关闭它们。现在我重新开始使用OAuth2并生成有效的访问令牌。

问题:即使使用访问令牌,我在尝试获取电子表格时也会收到错误请求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的更新而改变,并且访问令牌有效,我最好的猜测是服务用户/开发人员项目错过了某些权限或类似的内容。但不知道在哪里解决这个问题。

EDIT-2:我发现访问令牌可以很好地处理新的api url,但是不会使用旧的api调用。不幸的是,我不能在我的环境中使用新的Google SDK,因为我只限于.NET 3.5或更低版本。也许有一个选项可以让服务用户使用旧的api调用或类似的东西?

1 个答案:

答案 0 :(得分:2)

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

DocumentsService接缝不再起作用了(至少对我而言)。改为使用SpreadsheetsService并确保使用SpreadsheetsService.SpreadsheetQuery代替DocumentsService.SpreadsheetService来解决问题。在我的情况下,第二个隐藏得很好。