如何使用服务帐户凭据将文件上传到Google云端硬盘

Sni*_*r03 6 python google-api google-drive-api google-api-python-client service-accounts

我想使用Google服务帐户凭据将文件上传到我的Google云端硬盘.

我从Google Developer Console下载了凭证作为JSON文件,并从中获取了凭证.

这是我的代码片段.

google_drive_service = discovery.build('drive', 'v3',
          credentials=ServiceAccountCredentials.from_json_keyfile_name
                           os.path.join(settings.CLIENT_PATH, settings.CLIENT_SECRET_FILE),
                           scopes=settings.SCOPES))


media = MediaFileUpload(tmp_file_path, mimetype=tmp_file.content_type, resumable=True)
google_drive_service.files().create(body=file_metadata, media_body=media, fields='id').execute()
Run Code Online (Sandbox Code Playgroud)

代码运行且没有错误,但我找不到上传到我的Google云端硬盘帐户的文件.我不确定为什么不上传文件.你想帮我解决这个问题吗?

DaI*_*mTo 9

您遇到的问题是服务帐户不是您.您已将文件上传到服务帐户Google云端硬盘帐户,而不是您的个人云端硬盘帐户.尝试做一个文件列表,你应该看到该文件.

建议.获取服务帐户电子邮件地址并与您共享个人Google云端硬盘帐户中的目录,就像您与其他任何用户共享一样.然后,服务帐户将能够上载到此目录.只需确保在上传文件后设置文件权限,授予您个人驱动器帐户访问该文件的权限.上传文件时,它将由服务帐户拥有.

  • 记住我说的权限。您不希望个人驱动器帐户中的文件无法访问。我也从来没有弄清楚谁为某人帐户上的服务帐户存储的文件的存储空间收费。它是一个谜。 (2认同)