Python 驱动器API请求中未列出任何Google驱动器文件
我正在尝试使用桌面应用程序获取谷歌硬盘中的文件列表。代码如下:Python 驱动器API请求中未列出任何Google驱动器文件,python,google-drive-api,google-api-python-client,Python,Google Drive Api,Google Api Python Client,我正在尝试使用桌面应用程序获取谷歌硬盘中的文件列表。代码如下: def main(argv): storage = Storage('drive.dat') credentials = storage.get() if credentials is None or credentials.invalid: credentials = run(FLOW, storage) # Create an httplib2.Http object to
def main(argv):
storage = Storage('drive.dat')
credentials = storage.get()
if credentials is None or credentials.invalid:
credentials = run(FLOW, storage)
# Create an httplib2.Http object to handle our HTTP requests and authorize it
# with our good Credentials.
http = httplib2.Http()
http = credentials.authorize(http)
service = build("drive", "v2", http=http)
retrieve_all_files(service)
然后在“检索所有文件”中,我打印文件:
param = {}
if page_token:
param['pageToken'] = page_token
files = service.files().list(**param).execute()
print files
但在我对我的帐户进行身份验证后,打印的文件列表中没有任何项目。有人有类似的问题或知道解决方法吗?如果我错了,请纠正我,但我相信您使用的是
https://www.googleapis.com/auth/drive.file
scope,它仅返回应用程序已创建或已使用或显式打开的文件
要检索所有文件,您需要使用更广泛的范围:https://www.googleapis.com/auth/drive
要了解有关不同作用域的更多信息,请查看。首先,您需要遍历page_令牌,以获取我的驱动器以及任何子文件夹的所有内容。还有一些事情可能太像不提供查询等。请尝试以下方法:
def retrieve_all_files(service):
""" RETURNS a list of files, where each file is a dictionary containing
keys: [name, id, parents]
"""
query = "trashed=false"
page_token = None
L = []
while True:
response = service.files().list(q=query,
spaces='drive',
fields='nextPageToken, files(id, name, parents)',
pageToken=page_token).execute()
for file in response.get('files', []): # The second argument is the default
L.append({"name":file.get('name'), "id":file.get('id'), "parents":file.get('parents')})
page_token = response.get('nextPageToken', None) # The second argument is the default
if page_token is None: # The base My Drive folder has None
break
return L
你能粘贴所有的文件吗?它看起来像是一个有用的函数。@AliAfshar,你可以在这里找到它:我已经尝试了你的建议,但返回的列表中仍然没有内容……源代码是否在任何地方可用,以便我们可以尝试复制?更改作用域时,请确保删除
drive.dat
,因为它可能会使用未被批准用于更广泛作用域的旧令牌。