Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 驱动器SDK未列出所有我的文件_Python_Google Api_Google Drive Api_Google Drive Realtime Api - Fatal编程技术网

Python 驱动器SDK未列出所有我的文件

Python 驱动器SDK未列出所有我的文件,python,google-api,google-drive-api,google-drive-realtime-api,Python,Google Api,Google Drive Api,Google Drive Realtime Api,我试图列出我的驱动器中的所有文件(大约10个),但下面只列出1个(这甚至不是我的真实文件) 守则: from httplib2 import Http from oauth2client.client import SignedJwtAssertionCredentials client='my_client_id' client_email = 'my_client_email' with open("/path/to/file.p12") as f: private_key = f

我试图列出我的驱动器中的所有文件(大约10个),但下面只列出1个(这甚至不是我的真实文件)

守则:

from httplib2 import Http
from oauth2client.client import SignedJwtAssertionCredentials

client='my_client_id'
client_email = 'my_client_email'
with open("/path/to/file.p12") as f:
    private_key = f.read()

credentials = SignedJwtAssertionCredentials(client_email, private_key, 'https://www.googleapis.com/auth/drive')
http_auth = credentials.authorize(Http())
drive_service = build('drive', 'v2', http=http_auth)
r = drive_service.files().list().execute()
files = r['items']
for f in files:
    print f['id'], f['title']
结果:

"<file_id> How to get started with Drive"
“如何开始使用硬盘”
编辑: 与之类似,但答案是拥有正确的oauth范围,我已经在上面介绍过了

编辑#2: 我想这可能是一个时间问题,所以我给了它几个小时,但仍然没有鹅

编辑#3: 如果我尝试从另一个用户复制一个文件,然后列出我的文件,那么我将得到2个文件: “如何开始使用硬盘” “我的新文件”
那么,这只是列出该应用程序创建的文件?如何获取其余文件???

您使用服务帐户进行身份验证。默认情况下,服务帐户没有访问驱动器数据的权限,只有它自己拥有的文件

您有三个解决此问题的选项:

  • 在驱动器帐户中创建文件夹,并与服务帐户共享(读/写)。您在该文件夹中放置的任何文件都可以被您和您的服务帐户读写

  • 如果您使用Google Apps For Business,请设置以允许您的服务帐户模拟域中的所有用户。这样,您就可以让您的服务帐户表现得像您的实际谷歌应用程序帐户一样

  • 无论你是否在商业上使用谷歌应用程序:不要使用服务帐户,而是使用。使用3条腿的OAuth,您将能够生成一个访问令牌和一个刷新令牌,允许您的应用程序代表您的实际Google帐户在驱动器中运行。请注意,最后一个选项根本不使用服务帐户


  • 最简单的显然是选项(1)。如果不可接受,则我将使用选项(3),除非您确实希望能够模拟域中的所有用户。

    您使用服务帐户进行身份验证。默认情况下,服务帐户没有访问驱动器数据的权限,只有它自己拥有的文件

    您有三个解决此问题的选项:

  • 在驱动器帐户中创建文件夹,并与服务帐户共享(读/写)。您在该文件夹中放置的任何文件都可以被您和您的服务帐户读写

  • 如果您使用Google Apps For Business,请设置以允许您的服务帐户模拟域中的所有用户。这样,您就可以让您的服务帐户表现得像您的实际谷歌应用程序帐户一样

  • 无论你是否在商业上使用谷歌应用程序:不要使用服务帐户,而是使用。使用3条腿的OAuth,您将能够生成一个访问令牌和一个刷新令牌,允许您的应用程序代表您的实际Google帐户在驱动器中运行。请注意,最后一个选项根本不使用服务帐户


  • 最简单的显然是选项(1)。如果不可接受,则我将使用选项(3),除非您确实希望能够模拟域中的所有用户。

    对于#3,刷新令牌持续多长时间?刷新令牌是无限有效的。只有访问令牌的生存期为1小时,然后使用刷新令牌刷新它。我有应用程序在同一刷新令牌上工作多年。对于ා3刷新令牌持续多长时间?刷新令牌的有效性不确定。只有访问令牌的生存期为1小时,然后使用刷新令牌刷新它。我有一些应用程序已经在同一个刷新令牌上运行多年。