是否可以使用非交互式python脚本从其他用户的Google驱动器中提取文件?

时间:2016-05-17 02:17:28

标签: python google-drive-api

我有点迷失在google api文档丛林中...需要一些帮助

我运行在AWS上托管的SaaS服务。我想写一个小的python非交互式脚本

  • 在我的Linux上运行
  • 会定期从某些不相关的Google云端硬盘用户(想要授权我提取这些文件,但我不知道如何引导他们)中提取某些文件。

但是我迷失在google api docs的liguistic丛林中(英语不是我的母语)。花了几个小时没有任何表现......除了沮丧。我也经历了很多SO帖子。

首先,我甚至无法判断谷歌硬盘是否可行。我看到的所有示例都是针对应用数据而非用户数据。我知道使用AWS S3或FTP服务器这将是微不足道的。

非常感谢任何帮助。

----编辑1(对于Klaus D。)

下面是我想要映射的场景,以及我到目前为止运行的步骤

  1. 有文件所有者。这通常是我公司以外的人。我创建了一个测试谷歌帐户,创建了一个文件夹,并在那里填充了一些文件。我称之为“file-owner-test@gmail.com”
  2. 对于这个用户,我创建了一个项目“proj-xxx”,启用了Drive API,创建了一个服务帐户“prod-xxx-service-account”。
  3. 接下来,我检查了“提供私钥”,并下载了一个我保存为“test-credentials.json”的JSON文件,转移到我的linux框中。我未选中“域宽”复选框。
  4. 在我的linux框中,我现在正在尝试显示here的python quickstart脚本,将credential_path设置为下载的文件。但它在store.get()上打破了:

    store = oauth2client.file.Storage(credential_path) credentials = store.get()

  5. 有一个清脆的KeyError: _module

     File "./testprog.py", line 44, in get_credentials
      credentials = store.get()
     File "build/bdist.linux-x86_64/egg/oauth2client/client.py", line 421, in get
     File "build/bdist.linux-x86_64/egg/oauth2client/file.py", line 66, in locked_get
     File "build/bdist.linux-x86_64/egg/oauth2client/client.py", line 317, in new_from_json
    KeyError: '_module'
    

    我看到here以及github上都有未解答的SO问题。

    凭证文件如下所示:

    {
      "type": "service_account",
      "project_id": "proj-xxx",
      "private_key_id": "40-characters-wide-gibberish",
      "private_key": "-----BEGIN PRIVATE KEY-----\nmulti-line-private-key\n-----END PRIVATE KEY-----\n",
      "client_email": "prod-xxx-service-account@proj-xxx.iam.gserviceaccount.com",
      "client_id": "21-digit-number",
      "auth_uri": "https://accounts.google.com/o/oauth2/auth",
      "token_uri": "https://accounts.google.com/o/oauth2/token",
      "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
      "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/prod-xxx-service-account%proj-xxx.iam.gserviceaccount.com"
    }
    

    因此,这基本上是尝试以非交互方式使用凭证文件获取自己的用户数据。但API尚不清楚(非常安全!!)。到目前为止,我可能还在步骤中犯了其他错误。我还没有完成 - 我接下来需要为此服务帐户添加一些权限!

    我希望这为那些知道提供一点指导的人增加了足够的清晰度。感谢。

0 个答案:

没有答案