(所有在同一个项目中)
Android应用
网络应用
服务帐户
用户已使用Cross Client Identity在其Android设备上授权该应用: oauth2:server:client_id:[web_app_id] .apps.googleusercontent.com范围......
这与范围drive.file(以及drive.readonly)失败: 错误信息: 经过身份验证的用户尚未授予对文件[file_id]
的app [project_id]写入权限(顺便说一下:为什么copy()需要写访问?给用户写文件访问不会改变这个错误)
适用于完整的驱动器范围 (但:我的应用不需要查看尚未创建的文件 - 所以我想避免使用它)
通过重新插入文件而不是复制文件也可以实现相同的结果 (这个开销对我的应用程序很重要,因为多个用户可能会请求相同的文件)
与UI Picker中的文件进行显式交互将无法正常工作,因为在请求文件后必须创建该文件。在不降低Android应用程序可用性的情况下,我也无法想办法如何做到这一点。
www.googleapis.com/auth/drive.file :对应用创建或打开的文件的按文件访问权限
在我看来,这应该足够了。 由我的应用程序的服务帐户创建/拥有/共享文件。 并由我的应用代表用户复制。
www.googleapis.com/auth/drive.readonly 允许对文件元数据和文件内容进行只读访问
至少这个应该工作,因为它应该给所有文件的读访问权限,这些文件应该足以复制"与用户共享"由"用户授权创建的文件"应用
Web应用程序和服务帐户位于同一个项目中。 Web应用程序是否可以代表用户充当服务帐户?如果是的话 - 我不知道怎么做。这会有所作为吗?
在这个特殊用例中,这对我来说似乎是一个Bug,因为可以通过解决方法实现相同的结果。至少范围drive.readonly应该允许我的应用程序将应用程序拥有的文件复制到用户的驱动器。 通过普通的服务帐户制作副本,然后将该副本的所有者更改为用户将是另一种解决方法,但也会失败。
我必须遗漏一些简单的东西。
请指导我。
谢谢。