Папки не отображаются в корневом каталоге при использовании «root» в родителях при использовании списка файлов API Google Диска.

Я просто хотел видеть папки и файлы в корневом каталоге, когда я устанавливаю «root» для родителей в Q, но я вижу только один файл PDF с названием «Начало работы». (Я использовал код С#)

Где мои папки?

Но я вижу папки, когда ищу в коде по имени (например, name='Folder1'). Также я могу видеть выходные данные папки, когда я использую тест Api под названием «Попробуйте этот API», который находится на веб-сайте справки API (https://developers.google.com/drive/v3/reference/files/list).

Так что только код С# не показывает папки? Подскажите пожалуйста, почему он показывает только файлы, а не папки?

К вашему сведению: я прошел аутентификацию с помощью служебной учетной записи и использовал Google Drive v3 SDK.


person Dennis    schedule 29.06.2017    source источник
comment
@Srusti Thakkar Это проблема возникла, когда я использую «root» для родителей в Q   -  person Dennis    schedule 29.06.2017


Ответы (2)


Если единственный файл, который вы видите, это pdf-файл «Начало работы», это верный признак того, что вы используете учетную запись службы для аутентификации.

Сервисные аккаунты — это не вы. Думайте об этом как о фиктивном пользователе, у него есть собственная учетная запись Google Drive, в которой по умолчанию нет файлов.

Опции:

  1. Загрузите файлы в сервисный аккаунт с помощью метода files.create.
  2. Поделитесь папкой в ​​своей личной учетной записи Google Диска с служебной учетной записью. Вы делаете это, беря адрес электронной почты учетной записи службы и делясь с ним папкой. Примечание: насколько мне известно, вы не можете делиться своей личной корневой папкой с кем-либо.

Совет. Если вы разрешаете служебной учетной записи загружать файлы в вашу личную учетную запись Google Диска, не забудьте предоставить вашим личным пользователям разрешения на доступ к файлам с помощью permissions.create, иначе в вашей учетной записи диска будут файлы, на доступ к которым у вас нет прав.

person DaImTo    schedule 29.06.2017
comment
Спасибо за ваш ответ. Как вы упомянули, я не могу поделиться корневой папкой с учетной записью службы. Кроме корневой папки все работало. Если я создам идентификатор клиента OAuth 2.0 или ключ API вместо учетной записи службы, я думаю, что решу проблему. Но он вызывает GoogleWebAuthorizationBroker. Это тоже проблема. Есть ли другой способ пропустить аутентификацию GoogleWebAuthorizationBroker при использовании идентификатора клиента OAuth 2.0 или ключа API вместо учетной записи службы? - person Dennis; 29.06.2017
comment
Ключ API предназначен для общедоступных данных, которые не будут работать, если вы не можете сделать свой корневой каталог общедоступным, что является плохой идеей по многим причинам и не может быть сделано. Oauth2 потребует, чтобы вы открыли окно аутентификации и запросили доступ пользователя. Я предлагаю вам создать каталог (NotRoot) в вашей учетной записи на диске, переместить в него все. Затем поделитесь NotRoot с учетной записью службы, это грязно, но работает. - person DaImTo; 29.06.2017
comment
Кстати, для удовольствия я только что позвонил кому-то в Google и спросил, почему мы не можем поделиться корнем, это раздражает - person DaImTo; 29.06.2017
comment
Спасибо за ваше разъяснение. Я спрошу вас снова, когда у меня будет новый вопрос. - person Dennis; 29.06.2017
comment
И, пожалуйста, напишите здесь, когда получите ответ, почему мы не можем поделиться корнем. - person Dennis; 29.06.2017
comment
Я сомневаюсь, что они скажут мне свою причину, но я добавлю ее здесь, если они это сделают. Я думаю, что лучшее, на что мы можем надеяться, это запрос функции для его добавления. - person DaImTo; 29.06.2017
comment
Еще один вопрос, я создал каталог Non-Root и поделился им со своей учетной записью службы. Имя папки MyRoot. Я предполагаю, что могут быть другие каталоги с тем же именем, что и этот.. (например, /MyRoot/Folder1/Folder2/MyRoot). ' в Q у нас будет 2 результата. Как я могу решить эту проблему? На данный момент, как вы знаете, мы не можем перечислить папки и файлы в корне, поэтому возможно получение MyRoot без дублирования? - person Dennis; 29.06.2017
comment
вероятно, что-то вроде его mimeType == ‘application/vnd.google-apps.folder’ ‘root’ у родителей - person DaImTo; 29.06.2017

Не знаю, ответят на этот вопрос или нет, поэтому отвечаю. Я столкнулся с проблемой, когда использовал name='root'. Он возвращал мне список файлов и папок, но некоторые из них отсутствовали.

Я где-то нашел и изменил строку «Q» следующим образом, и теперь она показывает мне правильную информацию.

('root' in parents)
person Subhasis    schedule 08.01.2018