JS Drive API:Files.List返回500个内部服务器错误

时间:2015-02-23 02:56:19

标签: javascript google-drive-api google-client

更新

我从API资源管理器中获取了工作请求(复制到cURL)(定义了' id'字段),并将URL和授权标头中的API密钥替换为成功请求中的API密钥(没有定义' id'字段)。运行此请求然后失败。因此,当使用我自己的凭据并出现500错误时,完全相同的标题(除了授权)和完全相同的请求(键除外)都会失败。此外,这些相同的凭据能够向Drive API发出其他请求,因此它们实际上是有效的。

更新2

以下是从API Explorer获取和删除的cURL请求。当用我自己的密钥/令牌替换它们时,请求返回500错误。与"(id)"完全相同的请求从中移除但是使用我自己的密钥/令牌。

curl 'https://content.googleapis.com/drive/v2/files?q=trashed%3Dfalse+and+%27root%27+in+parents&fields=items(id)%2CnextPageToken&key=<KEY>' -H 'Authorization: Bearer <TOKEN>' -H 'X-Goog-Encode-Response-If-Executable: base64' -H 'X-Origin: https://developers.google.com' -H 'X-ClientDetails: appVersion=5.0%20(Macintosh%3B%20Intel%20Mac%20OS%20X%2010_10_1)%20AppleWebKit%2F537.36%20(KHTML%2C%20like%20Gecko)%20Chrome%2F40.0.2214.115%20Safari%2F537.36&platform=MacIntel&userAgent=Mozilla%2F5.0%20(Macintosh%3B%20Intel%20Mac%20OS%20X%2010_10_1)%20AppleWebKit%2F537.36%20(KHTML%2C%20like%20Gecko)%20Chrome%2F40.0.2214.115%20Safari%2F537.36' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.115 Safari/537.36' -H 'Referer: https://content.googleapis.com/static/proxy.html?jsh=m%3B%2F_%2Fscs%2Fapps-static%2F_%2Fjs%2Fk%3Doz.gapi.en.9OJnLZReRBQ.O%2Fm%3D__features__%2Fam%3DAQ%2Frt%3Dj%2Fd%3D1%2Ft%3Dzcms%2Frs%3DAGLTcCOvQmx_voM6JiXRxPIdYyD-EV0zsQ' -H 'X-JavaScript-User-Agent: google-api-javascript-client/1.1.0-beta' -H 'X-Referer: https://developers.google.com' --compressed

我的令牌已获得以下范围的授权: &#34; https://www.googleapis.com/auth/drive.file&#34;:&#34; https://www.googleapis.com/auth/userinfo.email&#34;:&#34; https://www.googleapis.com/auth/drive.install&#34;:&#34; {{3} }&#34;:&#34; https://www.googleapis.com/auth/contacts.readonly&#34;:&#34; https://www.googleapis.com/auth/drive.appdata&#34;:&#34; https://www.googleapis.com/auth/plus.me&#34;:&# 34; https://www.googleapis.com/auth/drive.metadata.readonly&#34;

原帖

几天前,每个页面加载时运行的files.list查询始终返回500(内部服务器错误)响应。我正在使用JS google客户端lib来运行files.list请求。通过API资源管理器运行的相同请求正在运行。

我可以通过删除&#39;字段来使files.list请求成功。 param或简化&#39;字段&#39; param to just&#39; items,nextPageToken&#39;而不是&#39; items(id),nextPageToken&#39;。

运行请求的代码简化如下:

var request = gapi.client.drive.files.list(
{
    fields: 'items(id),nextPageToken',
    maxResults: 50,
    q: "trashed=false and 'root' in parents",
    pageToken: undefined
});

...

// Async
request.execute();

以下是从API资源管理器和页面发送的请求(已损坏和工作版本)。我没有看到它们之间存在任何差异,除了“q&#39;”的不同编码。来自API资源管理器的param(以及一些标题......)。鉴于不同的编码在没有&#39; id&#39;指定的字段并替换&#39; q&#39;使用API​​资源管理器编码版本的请求中的参数不能解决问题。

从API资源管理器发送的请求 - 工作

https://content.googleapis.com/drive/v2/files?maxResults=50&q=trashed%3Dfalse+and+%27root%27+in+parents&fields=items(id)%2CnextPageToken&key=<API KEY>

从页面发送的请求(包含字段) - 已损坏

https://content.googleapis.com/drive/v2/files?maxResults=50&q=trashed%3Dfalse%20and%20%27root%27%20in%20parents&fields=items(id)%2CnextPageToken&key=<API KEY>

从页面发送的请求(不含字段) - 工作

https://content.googleapis.com/drive/v2/files?maxResults=50&q=trashed%3Dfalse%20and%20%27root%27%20in%20parents&fields=items%2CnextPageToken&key=<API_KEY>

我错过了一些明显的东西吗?我是否未能以某种方式正确编码fields参数(encodeURIComponent导致&#39; Invalid Request&#39; errors)?其他人可以重现相同的问题,或者他们已经看到了吗?

谢谢!

0 个答案:

没有答案