使用Google Drive API导航到文件夹

时间:2016-02-17 04:10:05

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

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

使用Javascript,我已完成Quickstart,在Google Dev Console中设置应用和API启用,已获得授权,并且可以使用{{1}在root用户读取文件名}方法,但是为了导航到特定目录而停留在运行Files Search调用的位置。

我尝试了这个变种:

gapi.client.drive.files.list()

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

我尝试使用Files:List页面上的查询参数,只使用fileID作为参数,但我一直得到400响应:

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

我确定它很简单,但纯粹的Http Rest东西并不是我的强项......感谢任何潜在客户!

2 个答案:

答案 0 :(得分:1)

您是否尝试使用文档工具? https://developers.google.com/drive/v3/reference/files/list

您使用的查询是正确的,只需更改版本,您使用的是v2,我认为此参数适用于v3。

当我使用'+'字符时,我也遇到了一些问题,我只是在工具中删除它并且它有效,似乎它正在重新编码字符。

答案 1 :(得分:1)

string nlsLang = Settings.Default.NLS_LANG; var arr = nlsLang.Split('_'); string language = arr[0]; arr = arr[1].Split('.'); string territory = arr[0]; string characterSet = arr[1]; OracleGlobalization info = connection.GetSessionInfo(); info.Language = language; info.Territory = territory; info.NumericCharacters = characterSet; connection.SetSessionInfo(info); 参数尝试不同的编码。

而不是

q

使用它:

q='0B36wII03Fph8aFhtTFN5SVRYR0U'+in+parents

哦,并更新到API的v3。

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

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

奇怪的是,当您使用Google APIs Explorer时,完全相同的URL会记录为正常工作。

作为最后的手段,我尝试了不同的请求参数编码,然后API工作。

这是我的替代电话:

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云端硬盘文档相反,但效果很好。