通常情况下,可以使用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令牌会覆盖所包含的任何其他授权。
答案 0 :(得分:0)
谷歌提供的客户端不支持此功能,但为每个请求提供Authorization
标头将起作用。假设所有授权标头值都正确,给出的示例应该有效。