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

1 ответ

Решение

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

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

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

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

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

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

Другие вопросы по тегам