2016-01-11 4 views
0

Я работаю с API-интерфейсом google с PHP. В основном я создаю учетные данные и застрял в точке, где я хочу перечислить файлы файлов google. Вот мой код, который я пытаюсь.Невозможно получить список файлов с Google Drive с помощью php

<?php 
require_once realpath(dirname(__FILE__) . '/gac/src/Google/autoload.php'); 

$client = new Google_Client(); 

session_start(); 

$client->setClientId('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'); 
$client->setClientSecret('xxxxxxxxxxxxxxxxxxxxxxxxxxxx'); 
$client->setRedirectUri('http://www.my-website-name.com/drive_test'); 
$client->setScopes(array('https://www.googleapis.com/auth/drive.file')); 

if (isset($_GET['code']) || (isset($_SESSION['access_token']) && $_SESSION['access_token'])) { 
    if (isset($_GET['code'])) { 
     $client->authenticate($_GET['code']); 
     $_SESSION['access_token'] = $client->getAccessToken(); 
    } else 
     $client->setAccessToken($_SESSION['access_token']); 

    $service = new Google_Service_Drive($client); 

    echo "<pre>"; 
    $all_files = ""; 
    $all_files = retrieveAllFiles($service); 
    print_r($all_files); 
    die; 

} else { 
    $authUrl = $client->createAuthUrl(); 
    header('Location: ' . $authUrl); 
    exit(); 
} 


/** 
* Retrieve a list of File resources. 
* 
* @param Google_Service_Drive $service Drive API service instance. 
* @return Array List of Google_Service_Drive_DriveFile resources. 
*/ 
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; 
} 

?>

Я получаю такой вывод.

Array 
(
) 

Пожалуйста, помогите мне решить эту проблему. Спасибо.

+0

только после этой строки '$ файлов = $ сервис-> files-> listFiles ($ параметров);', попробуйте 'var_dump ($ files);' и затем 'var_dump ($ files-> getItems())' и посмотреть, что выводит? – atoms

+0

@atom Я получаю что-то вроде этого http://pastebin.com/SkLbK5dD –

+0

ну, похоже, он связан. Вам нужно предоставить доступ к файлам до их просмотра? – atoms

ответ

1

О да, наконец, я нашел проблему и исправлю ее. Это вопрос разрешения. Я просто заменить этот код

$client->setScopes(array('https://www.googleapis.com/auth/drive.file')); 

С новым кодом

$client->setScopes(array('https://www.googleapis.com/auth/drive')); 

и everythig