Drive SDK не отображает все мои файлы

Я пытаюсь перечислить все файлы на моем диске (около 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 файла: «Как начать работу с Диском» «Мой новый файл». Итак, это просто список файлов, созданных этим приложением. ? Как мне получить остальные файлы???


person user_78361084    schedule 03.01.2015    source источник


Ответы (1)


Вы используете учетную запись службы для аутентификации. Сервисный аккаунт по умолчанию не имеет права доступа к вашим данным на Диске, а только к файлам, которыми он владеет сам.

У вас есть три варианта обойти это:

  1. Создайте папку в своей учетной записи на Диске и предоставьте доступ к ней (чтение/запись) служебной учетной записи. Любой файл, который вы поместите в эту папку, будет доступен для чтения и записи как вам, так и вашей учетной записи службы.

  2. Если вы используете Google Apps для бизнеса, настройте делегирование на уровне домена, чтобы ваш сервисный аккаунт мог выдавать себя за все пользователи в вашем домене. Таким образом, вы сможете заставить свою учетную запись службы вести себя так, как если бы она была вашей реальной учетной записью Google Apps.

  3. Независимо от того, используете ли вы Google Apps для бизнеса или нет, используйте не сервисный аккаунт, а 3. низкоуровневый OAuth. С помощью трехэтапного OAuth вы сможете создать токен доступа и токен обновления, которые позволят вашему приложению действовать на Диске от имени вашей фактической учетной записи Google. Обратите внимание, что этот последний вариант вообще не использует учетные записи служб.

Самым простым, очевидно, является вариант (1). Если это неприемлемо, я бы выбрал вариант (3), если вы действительно не хотите иметь возможность выдавать себя за всех пользователей в вашем домене.

person David    schedule 10.01.2015
comment
для № 3, как долго действует токен обновления? - person user_78361084; 11.01.2015
comment
Токен обновления действителен бессрочно. Только токен доступа имеет срок жизни 1 час, затем вы обновляете его с помощью токена обновления. У меня есть приложения, которые годами работают на одном и том же токене обновления. - person David; 11.01.2015