如何使用http请求从Google Drive获取列表文件?

时间:2018-11-10 09:17:52

标签: python http google-drive-api

如何获取带有访问令牌的文件列表? 我读了doc google drive,但是我不知道如何写请求列出文件。 我的例子:

rqf = requests.get('https://www.googleapis.com/drive/v3/files', headers=
{"Authorization": access_token})

输出

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "authError",
    "message": "Invalid Credentials",
    "locationType": "header",
    "location": "Authorization"
   }
  ],
  "code": 401,
  "message": "Invalid Credentials"
 }
}

2 个答案:

答案 0 :(得分:1)

  • 您想通过requests.get()使用Drive API v3检索文件列表。

如果我对您的问题的理解是正确的,那么该修改如何?

修改点:

  • 使用headers时,请使用{"Authorization": "Bearer " + accessToken}
  • 您还可以将访问令牌用作查询参数。

您可以根据自己的情况选择以下两种模式。

模式1:使用标题

import requests
access_token = "#####"
headers = {"Authorization": "Bearer " + access_token}
r = requests.get('https://www.googleapis.com/drive/v3/files', headers=headers)
print(r.text)

模式2:使用查询参数

import requests
access_token = "#####"
r = requests.get('https://www.googleapis.com/drive/v3/files?access_token=' + access_token)
print(r.text)

注意:

  • 此修改的脚本假定如下。
    • Drive API已在API控制台上启用。
    • 访问令牌的范围中包括检索文件列表的范围。

参考文献:

如果我误解了你的问题,对不起。

答案 1 :(得分:0)

使用PyDrive模块处理Google云端硬盘,我不知道是否喜欢使用它。但是,如果您要按照以下说明进行操作,请进一步阅读 PyDrive’s documentation

  1. 转到API控制台并创建自己的项目。
  2. 搜索“ Google Drive API”,选择条目,然后单击“启用”。
  3. 从左侧菜单中选择“凭据”,单击“创建凭据”,然后选择“ OAuth客户端ID”。
  4. 现在,需要设置产品名称和同意屏幕->单击“配置同意屏幕”,然后按照说明进行操作。完成后:
    1. 选择“应用程序类型”作为Web应用程序。
    2. 输入适当的名称。
    3. 输入http://localhost:8080作为“授权的JavaScript来源”。
    4. 输入http://localhost:8080/作为“授权重定向URI”。
    5. 点击“保存”。
  5. 点击客户端ID右侧的“下载JSON”以下载client_secret_<really long ID>.json

下载的文件包含您应用程序的所有身份验证信息。 将文件重命名为client_secrets.json并将其放置在您的工作目录中。

创建quickstart.py文件,然后复制并粘贴以下代码。

from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive

# Make auth
gauth = GoogleAuth()
gauth.LocalWebserverAuth() # Creates local webserver and auto handles authentication.

使用python quickstart.py运行此代码,您将看到一个网络浏览器,要求您进行身份验证。点击接受,身份验证完成。有关更多详细信息,请查看文档:{​​{3}}

获取文件列表

PyDrive处理分页并将响应解析为OAuth made easy的列表。让我们获取Google云端硬盘根文件夹中所有文件的标题和ID。再次,将以下代码添加到quickstart.py并执行它。

drive = GoogleDrive(gauth)

# Auto-iterate through all files that matches this query
file_list = drive.ListFile({'q': "'root' in parents and trashed=false"}).GetList()
for file1 in file_list:
    print('title: %s, id: %s' % (file1['title'], file1['id']))

您将在Google云端硬盘的根文件夹中看到所有文件和文件夹的标题和ID。有关更多详细信息,请查看文档:{​​{3}}