问题描述
我目前正在尝试创建一个文件,并使用Google提供的“服务帐户”身份验证方法将其上传到Google云端硬盘帐户中(因为最终产品都将在服务器端使用,因此我不希望用户必须授权访问权限,因此无需说OAuth。
我目前可以连接服务帐户并上传文件,但是在浏览Google云端硬盘时该文件不显示。
((我可以使用OAuth方法使它正常工作(上传和呈现);在上传之前我会手动授权应用程序,因此我很确定代码可以正常工作)
另外,我知道它正在工作的另一种方式是,一旦上传完成,我就会返回文件ID。如果我要转到“ https://drive.google.com/file/d/FILE_ID/view?usp=sharing”,则会遇到“需要授权”的问题。
创建服务帐户时我应该做些什么,以便我的Gmail帐户可以访问文件吗?
有关信息,这是我连接到API(服务器端)的方式:pastebin.com/3HacF02F
解决方法
您有四个选择...
- 请勿使用服务帐户。只需为用户帐户存储一个刷新令牌。参见How do I authorise an app (web or installed) without user intervention?。服务帐户是服务器访问的唯一选择,这是一个神话。
- 使用服务帐户写入已由您的用户帐户共享到服务帐户的文件夹
- 使用服务帐户写入由服务帐户共享到用户帐户的文件夹
- 使用G-Suite域中的服务帐户来模拟用户帐户
选项1是最简单的选项,而2和3的区别仅在于文件的拥有者,因此对文件的配额进行计数。 4仅与G-Suite相关
,如果您希望服务帐户在不征得其他用户同意的情况下代表其他用户执行操作,则必须:通过G Suite管理员,为该服务帐户启用“域范围委托”。
否则,服务帐户将需要至少征求用户一次同意,并存储访问和刷新令牌,因为当令牌过期时,可以无限期地使用Google服务器对其进行刷新。