Intereting Posts
Изменение macOS Sierra предотвращает «say», чтобы быть exec'd в скрипте PHP Элемент whitelist с классом, используя htmlpurifier Почему PDO печатает мой пароль при сбое соединения? Что было бы хорошим образцовым проектом, чтобы попросить потенциального программиста кодировать во время процесса найма? Какой HTML Parser (желательно PHP) поддерживает получение смещения текущего узла во входной строке? Как «делать что-то OR DIE ()» в PHP? mysqli :: mysqli (): (HY000 / 2002): Не удается подключиться к локальному серверу MySQL через сокет «MySQL» (2) Полет PHP-маршрутизации из подкаталога Как показать изображение, защищенное http-аутентификацией Как языки сценариев используют сокеты? Payum – PaymentDetails – объект в выполненном действии, где Facebook API: лучший способ получить, поделиться, подсчитать количество сообщений для страницы / группы? (PHP) Распространение содержимого массива равномерно по фиксированному числу столбцов DOCX Тип файла в PHP finfo_file – application / zip Использование Backstretch для разных изображений для отдельных страниц

API Google Диска (PHP) не может просматривать файлы

Я программирую приложение для извлечения файлов с Google Диска (в моей собственной учетной записи диска).

Я создал учетную запись службы Google, чтобы избежать процесса OAuth, потому что я использую собственную учетную запись Google Диска.

Затем я привел этот пример кода из Google:

function buildService() { $SERVICE_ACCOUNT_EMAIL = 'xxxx@developer.gserviceaccount.com'; $SERVICE_ACCOUNT_PKCS12_FILE_PATH = 'xxx-privatekey.p12'; $key = file_get_contents($SERVICE_ACCOUNT_PKCS12_FILE_PATH); $auth = new Google_AssertionCredentials( $SERVICE_ACCOUNT_EMAIL, array('https://www.googleapis.com/auth/drive'), $key); $client = new Google_Client(); $client->setUseObjects(true); $client->setAssertionCredentials($auth); return new Google_DriveService($client); } function retrieveAllFiles($service) { $result = array(); $pageToken = NULL; do { try { $parameters = array(); if ($pageToken) { $parameters['pageToken'] = $pageToken; } $files = $service->files->listFiles($parameters); $result = array_merge($result, $files->getItems()); $pageToken = $files->getNextPageToken(); } catch (Exception $e) { print "An error occurred: " . $e->getMessage(); $pageToken = NULL; } } while ($pageToken); return $result; } $service = buildService(); $allFiles = retrieveAllFiles($service); print_r($allFiles); 

Он возвращает пустой массив, когда у меня есть файлы и папки:

 Array ( ) 

В конфигурации электронная почта и закрытый ключ в порядке, предоставляемые самим Google; что я делаю неправильно?

Попробуйте изменить код, например https://developers.google.com/drive/delegation :

  function buildService($userEmail) { $SERVICE_ACCOUNT_EMAIL = 'xxxx@developer.gserviceaccount.com'; $SERVICE_ACCOUNT_PKCS12_FILE_PATH = 'xxx-privatekey.p12'; $key = file_get_contents($SERVICE_ACCOUNT_PKCS12_FILE_PATH); $auth = new Google_AssertionCredentials( $SERVICE_ACCOUNT_EMAIL, array('https://www.googleapis.com/auth/drive'), $key); $auth->sub = $userEmail; $client = new Google_Client(); $client->setUseObjects(true); $client->setAssertionCredentials($auth); return new Google_DriveService($client); } //... function retrieveAllFiles($service) $service = buildService("some@mail"); $allFiles = retrieveAllFiles($service); print_r($allFiles);