C# 用.net打开谷歌电子表格

C# 用.net打开谷歌电子表格,c#,.net,google-spreadsheet-api,bad-request,C#,.net,Google Spreadsheet Api,Bad Request,我正在开发一个通过.net访问谷歌电子表格的工具。它一直使用旧的身份验证方式,直到谷歌关闭它们。现在我重新使用OAuth2并生成了一个有效的访问令牌 问题:即使使用访问令牌,我在尝试获取电子表格时也会收到错误的请求400 下面是我如何设置服务和生成查询的代码: var documentService = new DocumentsService("documents"); var requestFactory = new GDataRequestFactory(null); requestFac

我正在开发一个通过.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);
我还尝试改用电子表格服务,并将访问令牌直接添加到查询中。然后查询的Uri如下所示:

https://docs.google.com/feeds/default/private/full?category=spreadsheet&title={speadsheetName}&access_token={access_token}
不管怎样,我总是得到“坏请求400”的响应。 有人能帮我找出哪里出了问题吗

谢谢

编辑:由于对OAuth2的更新并没有改变访问电子表格的代码,并且访问令牌是有效的,所以我的最佳猜测是服务用户/开发人员项目缺少一些权限或类似的内容。但不知道该在哪里解决这个问题


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

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


DocumentsService
seam将不再工作,至少对我来说是这样。改用
电子表格服务
,并确保使用
电子表格服务。电子表格查询
而不是
文档服务。电子表格服务
解决了此问题。第二个问题在我的案例中隐藏得很好。

每个谷歌服务的常见问题是它不喜欢请求的来源。您可能必须首先允许应用程序访问文档或服务。我已将服务用户的邮件地址添加到电子表格的“共享”中,并授予其编辑权限。这就是你的意思吗?不。我的意思是,如果你突然开始发送来自陌生客户和IP地址的请求,谷歌的API会发出抱怨。例如,如果你在一个示例web应用程序中使用gmail凭据,谷歌会试图让你填写验证码,但该应用程序显然没有打开浏览器,因此该过程失败。我如何允许我的应用程序访问文档或所需服务?@JuannStrauss一次也没见过。你确定吗?如果您可以重复,建议您创建一个问题,并将其提交给google。(2步身份验证、SMS样式身份验证存在问题)文档列表API-于2015年4月20日停止,我怀疑这是原因,您应该收到一封警告电子邮件