javascript - 使用 Google Drive API 导航到文件夹

标签 javascript http google-api http-headers google-drive-api

我需要知道如何正确使用文件搜索方法参数,以便在 Drive API 中遍历文件夹树。

使用 Javascript,我浏览了 Quickstart ,在 Google Dev Console 中设置应用程序和启用 API,已获得授权,并且可以使用 gapi.client.drive.files.list() 方法读取根目录下的文件名,但我卡住了在运行Files Search时调用以导航到特定目录。

我正在尝试这个的变体:

GET https://www.googleapis.com/drive/v2/files?q='0B36wII03Fph8aFhtTFN5SVRYR0U'+in+parents&key={CLIENT_ID}

...但我对如何调用 GET 请求感到困惑。我以前从未直接从 JS/HTML 使用过 REST 调用,所以我可能会错过一些基本的东西...但是,是的,我真的不知道如何在我的代码中使用它...

我尝试使用 Files:List 上的查询参数页面,仅使用 fileID 作为参数,但我不断收到 400 响应:

400 OK
- SHOW HEADERS -
{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "invalid",
    "message": "Invalid Value",
    "locationType": "parameter",
    "location": "q"
   }
  ],
  "code": 400,
  "message": "Invalid Value"
 }
}

我确信这很简单,但纯粹的 Http Rest 东西不是我的强项...感谢您的任何线索!

最佳答案

为您的 q 参数尝试不同的编码。

而不是

q='0B36wII03Fph8aFhtTFN5SVRYR0U'+in+parents

使用这个:

q=%270B36wII03Fph8aFhtTFN5SVRYR0U%27%20in%20parents

哦,更新到 API 的 v3。

虽然使用 v3 API,但在调用此 URL 时我看到了完全相同的问题:

https://www.googleapis.com/drive/v3/files?orderBy=name&q=name+contains+'search+term'+AND+mimeType+contains+'application%2Fvnd.google-apps.folder'&key={YOUR_API_KEY}

奇怪的是,当您使用 Google APIs Explorer 时,完全相同的 URL 被记录为有效。 .

作为最后的手段,我尝试了对请求参数进行不同的编码,然后 API 就起作用了。

这是我有效的替代调用:

https://www.googleapis.com/drive/v3/files?orderBy=name&q=name%20contains%20%27search%20term%27%20AND%20mimeType%20contains%20%27application%2Fvnd.google-apps.folder%27&key={YOUR_API_KEY}

这与 Google 云端硬盘文档相反,但效果很好。

关于javascript - 使用 Google Drive API 导航到文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35447777/

相关文章:

python-2.7 - 为什么我从 google adwords api 收到 CERTIFICATE_VERIFY_FAILED?

javascript - UMD 和 CommonJS (CJS) 包文件夹有何不同,我应该使用哪个?

JavaScript 对话框返回

javascript - 获取点击事件上的插入符位置

javascript - Javascript 中 x === 0 或 x < 1,哪个更好? x < 1 是否包括类型检查?

http - 如何在网站 url 上隐藏我的网站端口号

http - 谷歌翻译 API v2 : Allowing certain HTTP referrers

ajax - 如何在 firefox 扩展中创建 JSON post 请求?

android - 使用 Google Translate API for Android 时如何返回撇号?

C# http 监听器不在本地主机上监听,仅适用于 FQDN