【发布时间】:2021-08-18 06:57:40
【问题描述】:
我已经看到这个问题被问了几次,但没有一个答案有帮助。除非是“用户权限”问题,否则我不知道如何处理。
上下文
- 创建了一个新文件(来自 Lua 应用程序,因此使用 REST)
- 使用 ?uploadType=resumable
- 从返回中,捕获 responseHeaders['X-GUploader-UploadID'] 和 response['id'],两者的结果相同
- 文件存在,可以在 Google Drive 上查看
然后,尝试更新,我得到 404 Not Found。这是 Lua 代码:
代码
local url = "https://www.googleapis.com/upload/drive/v3/files"
[userStateID 有上面捕获的 id]
url = url.."/".._G.lobal.userStateID.."/?uploadType=media"
url = url.."/?uploadType=media&upload_id=".._G.lobal.userStateID
[我尝试了上述两种变体,结果相同]
resbody = stuff
local headers = {['Content-type'] = "application/json",
Authorization=oauth,
['user-agent'] = "SilkRoad ".._G.VERSION,
['X-Upload-Content-Type']="application/text; charset=utf-8",
['Content-Length']=string.len(resbody)
}
local params = {headers=headers,body=resbody}
network.request(url, "PUT", uploadListener, params )
[lua 中的异步网络调用]
结果
{"responseHeaders":{"Content-Type":"text/html; charset=UTF-8","X-GUploader-UploadID":"ABg5-UxILyJZKOABmdvQ2tDrsXrRTHY-pljfWSk67vcKyzcSoR28BoMjHG5gFi0a3GLUPVSU3T5bBvqlnK5qG0-lNEOc0Tp4vQ","Vary"" Origin, X-Origin","Date":"Sun, 30 May 2021 20:52:17 GMT","Alt-Svc":"h3-29=":443"; ma=2592000,h3-T051=" :443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=" :443"; ma=2592000; v="46,43"","Content-Length":"9","Server":"UploadServer"},"responseType":"text","phase":"end ","bytesEstimated":9,"response":"未找到","name":"networkRequest","bytesTransferred":9,"status":404,"url":"https://www.googleapis. com/upload/drive/v3/files/?uploadType=media&upload_id=ABg5-UxG8zBq7ARLKAd7cE0FB2z9NG1Sv8gKlnH_QjDqluSOaun5oRRI3h7fXHHn1KqEW1DolBkMmh4GlgwgOGl9NOc","isError":false,"requestId":" 没有“用户”可以授予权限。但也许要使用这种机制,要更新我的应用程序创建的任何文件,我必须要求用户转到他们的云端硬盘并更改权限?这听起来不对。也许我需要在元数据上加上一个标志? 'X-GUploader-UploadID' 没有记录,但如果我使用 response['id'],结果相同。我已验证 Google Drive(用于共享)中的 id 与 response['id'] 中返回的 id 相同。但是当我使用它进行更新时显示未找到。 顺便说一句,只是尝试通过重复使用简历 URL 或此变体来更新: 有一个奇怪的结果:没有错误,但文件没有更新。 在原始更新上使用 PATCH 而不是 PUT 也有一个奇怪的效果——没有错误,但将文件更新为空。所以也许这就是秘密,但我必须弄清楚如何正确传递身体?https://www.googleapis.com/upload/drive/v3/files?upload_id=...
【问题讨论】:
标签: lua google-drive-api http-status-code-404