使用服务帐户使用Google Drive API创建文件不会在授权用户帐户的GD上呈现文件

问题描述

我目前正在尝试创建一个文件,并使用Google提供的“服务帐户”身份验证方法将其上传到Google云端硬盘帐户中(因为最终产品都将在服务器端使用,因此我不希望用户必须授权访问权限,因此无需说OAuth。

我目前可以连接服务帐户并上传文件,但是在浏览Google云端硬盘时该文件不显示。

((我可以使用OAuth方法使它正常工作(上传和呈现);在上传之前我会手动授权应用程序,因此我很确定代码可以正常工作)

另外,我知道它正在工作的另一种方式是,一旦上传完成,我就会返回文件ID。如果我要转到“ https://drive.google.com/file/d/FILE_ID/view?usp=sharing”,则会遇到“需要授权”的问题。

创建服务帐户时我应该做些什么,以便我的Gmail帐户可以访问文件吗?


有关信息,这是我连接到API(服务器端)的方式:pastebin.com/3HacF02F

解决方法

您有四个选择...

  1. 请勿使用服务帐户。只需为用户帐户存储一个刷新令牌。参见How do I authorise an app (web or installed) without user intervention?。服务帐户是服务器访问的唯一选择,这是一个神话。
  2. 使用服务帐户写入已由您的用户帐户共享到服务帐户的文件夹
  3. 使用服务帐户写入由服务帐户共享到用户帐户的文件夹
  4. 使用G-Suite域中的服务帐户来模拟用户帐户

选项1是最简单的选项,而2和3的区别仅在于文件的拥有者,因此对文件的配额进行计数。 4仅与G-Suite相关

,

如果您希望服务帐户在不征得其他用户同意的情况下代表其他用户执行操作,则必须:通过G Suite管理员,为该服务帐户启用“域范围委托”。

否则,服务帐户将需要至少征求用户一次同意,并存储访问和刷新令牌,因为当令牌过期时,可以无限期地使用Google服务器对其进行刷新。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...