如何在同一批处理请求中为不同用户提供Google Drive API files.list请求?

时间:2014-07-29 19:40:21

标签: google-drive-api

通常情况下,可以使用BatchHttpRequest来聚合多个请求,但如果我想列出两个不同用户的文件会怎么样?

名义上每个用户需要一个oauth2令牌。 BatchHttpRequest要么为该批处理获取一个http对象(处理凭据),要么将其从调用.execute()时遇到的第一个批处理请求中拉出来。

使用oauth1对每个批处理的请求进行签名会产生正确的结果(每个用户的不同提要)。但是,使用oauth2并手动构建有效负载会产生相同的提要(在第一个批处理请求中匹配用户):

POST /batch HTTP/1.1
Host: www.googleapis.com
Content-Type: multipart/mixed; boundary=blah
Content-Length: 572
accept-encoding: gzip, deflate
Cache-Control: no-cache

--blah
Content-Type: application/http
Content-Transfer-Encoding: binary
Content-ID: <b29c5de2-0db4-490b-b421-6a51b598bd22+1>

GET /drive/v2/changes HTTP/1.1
Authorization: Bearer ya29.UQAabvlG2hnRPyEAAADUm7vkDe_qg7L49R655IyxvgBnkN7_PEgE3IG7UnZ_ZEmJwUK_6fSV4kTHjNQIjTk
accept: application/json
--blah
Content-Type: application/http
Content-Transfer-Encoding: binary
Content-ID: <b29c5de2-0db4-490b-b421-6a51b598bd22+2>

GET /drive/v2/changes HTTP/1.1
Authorization: Bearer ya29.UQBu8f9W8S5E6RwAAAAPqCOiqoFW3QEFYkBvQGx36UVKNHeEhdZT8GPN-P74ng
accept: application/json
--blah

由于oauth1的工作原理,这似乎至少在理论上是可行的,尽管我可能会被谷歌错误所阻止,其中批处理中第一个请求的oauth2令牌会覆盖所包含的任何其他授权。

1 个答案:

答案 0 :(得分:0)

谷歌提供的客户端不支持此功能,但为每个请求提供Authorization标头将起作用。假设所有授权标头值都正确,给出的示例应该有效。