【问题标题】:Google Drive API v3 change list request returns 400 bad request using .NET clientGoogle Drive API v3 更改列表请求使用 .NET 客户端返回 400 错误请求
【发布时间】:2016-03-17 21:14:14
【问题描述】:

我们正在创建一个将捕获 Google Drive 更改的 .NET 应用程序,并且我们正在将 .NET 客户端用于 Google Drive V3 API。下面的代码显示了我们如何调用 Changes.List 方法来返回驱动器更改的列表。该代码几天前有效,但现在每次它只返回错误代码 400(错误请求)。其他人看到问题了吗?

        var credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
            Secrets,
            Scopes,
            "user",
            CancellationToken.None,
            dataStore).Result;

        // Create Drive API service.
        var service = new DriveService(new BaseClientService.Initializer() { 
            HttpClientInitializer = credential,
            ApplicationName = ApplicationName,
        });

        while (pageToken != null)
        {
            var changeListRequest = service.Changes.List(pageToken);
            changeListRequest.Fields = "*";

            changeList = changeListRequest.Execute();

            pageToken = changeList.NextPageToken;
        }

错误发生在 changeListRequest.Execute() 调用上。

【问题讨论】:

    标签: .net google-drive-api


    【解决方案1】:

    好的,所以我发现问题出在以下行:

    changeListRequest.Fields = "*". 
    

    我必须指定实际字段,而不是星号:

    changeListRequest.Fields = "changes,kind,newStartPageToken,nextPageToken";
    

    现在它似乎工作正常。问题是我的旧代码直到几天前都运行良好!事实上,我从使用星号的 Google .NET 示例中复制了代码。我很高兴这不是生产代码。

    【讨论】:

      【解决方案2】:

      根据此Handling API Errors 文档,400 Bad Request 错误意味着您发送到网站服务器的请求(通常是加载网页的请求等简单的请求)在某种程度上不正确或已损坏,因此服务器无法明白了。

      这段代码几天前有效,但现在每次它只返回错误代码 400(错误请求)。

      • 清除浏览器的 cookie 和缓存,尤其是您在使用 Google 服务时收到错误请求错误。当读取的 cookie 损坏或太旧时,许多网站会报告 400 错误。

      您也可以查看此类似问题Getting 200 OK abd 400 bad request on the same request from Google Drive REST API

      【讨论】:

      • 我尝试清除 cookie 和缓存,但仍然遇到同样的错误。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-13
      相关资源
      最近更新 更多