请求AppDataFolder时,Google云端硬盘API会返回错误“无效值”和“无效查询”

时间:2018-04-12 12:42:10

标签: google-api google-drive-api

我试图请求位于AppDataFolder中的所有文件的列表。

当我提出以下请求时:

transition-timing-function

我收到以下错误:

.example-enter.example-enter-active {
    opacity: 1;
    transition: opacity 500ms ease-in-out 500ms;
}

.example-leave.example-leave-active {
   opacity: 0.01;
   transition: opacity 500ms ease-in-out;
 }

如果我只想获取所有文件的列表,为什么要问我查询? “q”参数是强制性的吗?我认为这是我的代码中的一些错误,所以我下载了最新的Google Drive SDK for Python并得到了同样的错误。

我尝试添加“q”参数,例如GET https://www.googleapis.com/drive/v2/files?spaces=appDataFolder&maxResults=1000 HTTP/1.1 Host: www.googleapis.com Authorization: Bearer <MyToken> User-Agent: <MyUserAgent> ,但它也返回了无效的查询错误。奇怪的是,如果我添加以下查询,我可以获取我的文件列表:HTTP/1.1 400 Bad Request { "error": { "errors": [ { "domain": "global", "reason": "invalid", "message": "Invalid query", "locationType": "parameter", "location": "q" } ], "code": 400, "message": "Invalid query" } } ,但如果我删除q=title != 'foo',我会再次收到查询错误。

我还尝试了另一个请求,但是它返回了一个空列表,虽然我知道AppDataFolder中有文件:

q=title='<myfolder>' or title='<file1 in my folder>' or title='<file2 in my folder>'...

更新:此问题看起来特定于某个帐户。我用另一个帐户测试了所有这些请求,并将所有文件隐藏在appdatafolder中。有效的请求:

title='<myfolder>'

第一个帐户有什么问题?

更新2:我无法再从其他帐户检索appdata文件列表。看起来API会发生一些事情。

1 个答案:

答案 0 :(得分:2)

“应用程序数据”文件夹&#39;是一个特殊文件夹,只有可由您的应用程序访问。其内容对用户隐藏 来自其他应用 。尽管对用户隐藏,但Application Data文件夹存储在用户的云端硬盘中,因此会使用用户的云端硬盘存储空间配额。 Application Data文件夹可用于存储配置文件,保存的游戏数据或用户不应直接与之交互的任何其他类型的文件。

即使用户无法看到Application Data文件夹的内容,他们也可以在“管理应用”对话框中看到应用的应用数据文件夹使用的存储空间

请求

GET https://www.googleapis.com/drive/v3/files?q='appDataFolder'+in+parents&key={YOUR_API_KEY}

<强> Respose:

{
 "kind": "drive#fileList",
 "incompleteSearch": false,
 "files": [
 ]
}

使用Google Apis Explorer进行测试会返回0个文件,因为Google apis资源管理器客户端尚未将任何文件上传到我的Google云端硬盘帐户。

Anwser:Appdata文件夹中的文件归创建它们的应用程序所有。如果您在用户应用程序数据文件夹中看到任何文件,那么我会建议您使用错误的客户端,并且无法查看您的应用程序可能上传的任何文件。

正确使用q

如文档中所述,正确使用q搜索app数据文件夹是。

'appDataFolder' in parents

AppData文档。

更新:

  

Q =标题=&#39;&#39;或标题=&#39;&#39;或title =&#39;&#39; ...,但如果我删除title =&#39;&#39;

如果这些工作正常并且文件的父级未说明appdata,那么我建议您将文件上传到用户主Google云端硬盘帐户,而不是将其上传到appdata。这是一个坏主意,因为用户将能够看到他们可能无法编辑的文件,这将导致他们很多混乱。如果你将它放在一个文件夹中并且没有授予它们权限,那么用户实际上可能无法看到该文件不确定。

更新2:

  

Q =&#39; appDataFolder&#39;在父母身上

将使用appDataFolder的父文件夹返回您的应用创建的所有文件。

  

Q =&#39; appfolder&#39;在父母身上

将使用appfolder的父文件夹返回所有文件,该文件夹实际上是用户Google云端硬盘帐户中的目录,而不是隐藏的appDataFolder

  

空间=&#39;驱动&#39;

这意味着数据存储在驱动器上。

  

spaces = appDataFolder

这是请求申请数据,但这只在V3中支持