使用 Google Drive API 更新文件时遇到 404 错误
我看到这个问题被问了几次,但没有一个答案是有帮助的。除非是一个 '用户权限' 的问题,在这种情况下我不知道如何处理。
上下文
- 创建了一个新文件(来自 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\u0026upload_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":"ended","bytesEstimated":9,"response":"Not Found","name":"networkRequest","bytesTransferred":9,"status":404,"url":"https://www.googleapis.com/upload/drive/v3/files/?uploadType=media\u0026upload\_id=ABg5-UxG8zBq7ARLKAd7cE0FB2z9NG1Sv8gKlnH\_QjDqluSOaun5oRRI3h7fXHHn1KqEW1DolBkMmh4GlgwgOGl9NOc","isError":false,"requestId":"<type 'userdata' is not supported by JSON.>"}
没有 '用户' 来赋予权限。但也许要使用这种机制,更新任何应用程序创建的文件,我必须请用户进入其驱动器并更改权限? 这听起来不对。也许在元数据上需要放置一个标志?
'X-GUploader-UploadID' 没有文档,但如果我使用 response['id'],结果相同。我已经验证了在 Google Drive 中的 id(用于共享)与返回的 response['id'] 相同。但在更新时会显示“未找到”。
顺便说一下,只是尝试通过重新使用恢复 URL 或此变化来更新:
https://www.googleapis.com/upload/drive/v3/files?upload\_id=...
有一个奇怪的结果:没有错误,但文件没有更新。
使用 PATCH 而不是 PUT 在原始更新上也有一个奇怪的效果--没有错误,但将文件更新为空。所以也许那是秘密,但我必须弄清楚如何正确传递正文?
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

已解决。我需要:
当然,至少对于 REST API,需要更好的文档或示例。