使用 .net 打开 google 个电子表格
Open google spreadsheet with .net
我正在开发一种通过 .net 访问 google 电子表格的工具。它使用旧的身份验证方式工作,直到 google 关闭它们。现在我重新开始使用 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 的更新而改变,并且访问令牌有效,我最好的猜测是服务 user/developer 项目缺少某些权限或类似的东西。但是不知道在哪里解决这个问题。
EDIT-2:我发现访问令牌适用于新的 api url 但不适用于旧的 api 调用。不幸的是,我不能在我的环境中使用新的 Google SDK,因为我只能使用 .NET 3.5 或更低版本。也许有一个选项可以让服务用户使用旧的 api 调用或类似的东西?
我找到了解决问题的方法:
DocumentsService
接缝(不再)起作用,至少对我而言。使用 SpreadsheetsService
代替并确保使用 SpreadsheetsService.SpreadsheetQuery
而不是 DocumentsService.SpreadsheetService
可以解决问题。第二个在我的情况下隐藏得很好。
我正在开发一种通过 .net 访问 google 电子表格的工具。它使用旧的身份验证方式工作,直到 google 关闭它们。现在我重新开始使用 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 的更新而改变,并且访问令牌有效,我最好的猜测是服务 user/developer 项目缺少某些权限或类似的东西。但是不知道在哪里解决这个问题。
EDIT-2:我发现访问令牌适用于新的 api url 但不适用于旧的 api 调用。不幸的是,我不能在我的环境中使用新的 Google SDK,因为我只能使用 .NET 3.5 或更低版本。也许有一个选项可以让服务用户使用旧的 api 调用或类似的东西?
我找到了解决问题的方法:
DocumentsService
接缝(不再)起作用,至少对我而言。使用 SpreadsheetsService
代替并确保使用 SpreadsheetsService.SpreadsheetQuery
而不是 DocumentsService.SpreadsheetService
可以解决问题。第二个在我的情况下隐藏得很好。