我正在开发一种通过 .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/