当我尝试授予任何文件的访问权限时,我会遇到500个错误。当文件与某人共享时,我不想发送电子邮件。我想停止通知电子邮件。
Insert insert = service.permissions().insert(fileId, newPerm);
insert.setSendNotificationEmails(false);
newPerm = insert.execute();
500 OK
{
"code" : 500,
"errors" : [ {
"domain" : "global",
"message" : "Internal Error. User message: "An internal error has occurred which prevented the sharing of these item(s): fileame"",
"reason" : "internalError"
} ],
"message" : "Internal Error. User message: "An internal error has occurred which prevented the sharing of these item(s): filename""
}
感谢任何建议。
在对此问题的另一个答案中,@eversmcc有一个正确的想法:暂停一点点。该错误是由于Google驱动器忙于处理该文件(创建文件,将其推动以使其可以使其在全球范围内访问或以其他方式进行更新)。一旦活动安顿下来,将其他用户添加到文档中就不应该是问题。
您可以从此Drive API文档页面查看您收到的(500)错误以及推荐的行动方案的描述,即要实现指数向退回,这实际上只是说您应该暂停一点&每次收到相同的错误时都会延长该延迟。
当@eversmcc实施20秒的暂停时,您不必使用固定的向后持续时间,因此指数为何有用。当只有4或8个就足够的时候,为什么要等20年代?另一个资源是此描述性博客文章。如果您不想自己实施,则可以尝试找到类似于这些(基于Python的)重试或退缩软件包的东西。查看此相关的问题,请Q&如果您想一个滚动的示例。
使用Drive API添加权限或任何文件 - 相关的操作,例如共享,复制,导入/导出等用床单电子表格说,您将使用Google Sheets API。
注1:在此帖子前一年有类似的问题,但根据此Q& a。
进行了修复注意2:驱动器API V2的permissions.insert()
命令将名称更改为V3中的permissions.create()
-请参阅迁移指南
我开始遇到这个问题,但通过在文件推和权限插入之间引入暂停来解决此问题。
我的"工作流"(使用HTTP帖子而不是ret ret Client):
- 按下文件。
- get fileId 从Google Drive API中响应。
- 将有效载荷发送到使用 fileid 的插入权限
我总是在步骤3中获得500"内部错误";该文件总是被成功推动。
在我的初始调试中,当逐步踏上时,我会尝试再次将同一文件推向Google,并且它将返回与以前使用同一文件的尝试相同的文件ID(因此Google Drive API必须重新调整文件文件是一样的)。
但是,当我尝试使用同一文件ID进行后续权限插入(仍在调试)时,它总是成功的。
因此,我刚刚引入了 20s暂停在文件推送和权限插入之间,这已经完成了技巧(因为时间在我的应用程序中并不重要)。
Google驱动器中必须有某种复制延迟(或'time_til_permissions_can_be_inserted')。很难相信,看到它是Google,但是。
这很可能是驱动器API基础架构中的瞬态误差。您有时可能会遇到这些行为,这是由于网络或服务器问题引起的。
不幸的是,有关此类错误的信息非常有限。建议的策略是执行和指数缩写,如此处和此处的详细说明。
在某些(奇怪的)情况下,该问题可能持续的时间比预期的要长,这是一个痛苦,对开发人员可能会令人沮丧,但最终将在24-48小时内消失,一切都会恢复正常。如果错误持续很长时间,则应向Drive API支持代理人请求跟踪令牌,该驱动器API支持代理将在内部生成更多信息,可以通过工程进行分析。