Google Realtime API和共享权限时间问题

时间:2013-08-19 17:55:11

标签: google-drive-api google-drive-realtime-api

简而言之,我们看到的是,如果我们创建一个新的实时文档并立即与另一个协作者共享,并且该协作者在看到它显示在“与我共享”文件夹中时加载实时文档,那么当协作者尝试将数据写入文件时,会发生错误,有时实时API会无声地失败。

我们已经能够通过编程方式添加权限以及使用Google云端硬盘的共享对话来重现这一点。以下是重现此错误的步骤。

  • 在不同的浏览器上登录两个不同的Google帐户
  • 在一个帐户中创建新的实时文档
  • 复制指向新文档的网址
  • 键入电子邮件地址
  • ,将新创建的文档与其他帐户共享
  • 尽可能快地验证新文档是否显示在其他帐户的“与我共享”文件夹中,并将复制的URL粘贴到其他浏览器中以加载其他帐户的文档(我能够在我的机器上在30秒内完成此操作时,我们会一致地重现这个问题,但如果至少延迟35秒,一切似乎都能正常工作)
  • 当为共享帐户加载文档时,请尝试将数据写入文档
  • 有时,实时API会以静默方式崩溃
  • 如果对文档的写入使用复合操作,则会出现以下错误:
  • 驱动器实时API错误:invalid_compound_operation: 在同步块结束时打开复合操作 - 您是否忘记调用endCompoundOperation()?
  • 未捕获的 DocumentClosedError:文档已关闭。

与新协作者共享现有文件时也会发生此问题。在我的机器上进行测试时,它似乎是一个计时问题,因为我可以在等待不到30秒的时间内一致地重现错误来加载共享文档,而且当等待时间35时我无法重现该问题。秒或更长时间。另一个有趣的发现是,问题似乎只是写入数据。我总是能够正确地从共享文档中读取数据,但如果它是在30秒以下的场景中加载的,那么我第一次尝试写入数据时,就会出现问题。更令人好奇的是,如果页面被刷新,那么即使在文档被共享的30秒内进行刷新,它也能正常工作。

感谢。

1 个答案:

答案 0 :(得分:1)

我不确定您的具体问题是什么,但是实时API可能会捕获JS中的错误,使其无声地失败并跳过调用endCompoundOperation。我建议打开chrome并启用“Pause on Exceptions”以捕获导致此问题的原因(https://developers.google.com/chrome-developer-tools/docs/javascript-debugging?csw=1#pause-on-exceptions)以查看实际失败的原因。