Vinny Pamnani
Vinny Pamnani

Reputation: 11

Listing all files from Google Drive

I would like to list all the files from my Google drive to my "DriveFiles.php" file where I can display the files and its details. I am a beginner so a complete code will be helpful. Thanks.

My code:

<?php


require_once 'google-api-php-client/src/Google_Client.php';
require_once 'google-api-php-client/src/contrib/Google_DriveService.php';
require_once 'google-api-php-client/src/io/Google_HttpRequest.php';
require_once 'google-api-php-client/src/contrib/Google_Oauth2Service.php';

// initialize a client with application credentials and required scopes.
$client = new Google_Client();
$client->setClientId('CLIENT_ID');
$client->setClientSecret('CLIENT_SECRET');
$client->setRedirectUri('REDIRECT_URI');
$client->setScopes(array(
          'https://www.googleapis.com/auth/drive',
          'https://www.googleapis.com/auth/userinfo.email',
          'https://www.googleapis.com/auth/userinfo.profile'));
$client->setUseObjects(true);


if (isset($_GET['code']))
   {
   session_start();
   print_r($_SESSION);
   $client->authenticate($_GET['code']);
   $_SESSION['token'] = $client->getAccessToken();
   $client->setAccessToken($_SESSION['token']);
   // initialize the drive service with the client.
   $services = new Google_DriveService($client);
   retrieveAllFiles($services);    

  }



 if(!$client->getAccessToken()){
   $authUrl = $client->createAuthUrl();
   echo '<a class="login" href="'.$authUrl.'">Login</a>';
   }


 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;
        }
        ?>

When I execute the code I get the following error:

Fatal error: Uncaught exception 'Google_Exception' with message 'Cant add services after having authenticated' in D:\GT_local\Public\google-api-php-client\src\Google_Client.php:115 Stack trace: #0 D:\GT_local\Public\google-api-php-client\src\contrib\Google_DriveService.php(1258): Google_Client->addService('drive', 'v2') #1 D:\GT_local\Public\quickstart.php(55): Google_DriveService->__construct(Object(Google_Client)) #2 {main} thrown in "FILE_LOCATION(C://google-api-php-client\src\Google_Client.php on line 115)"

How can I fix this.

Upvotes: 1

Views: 2163

Answers (1)

Rg14
Rg14

Reputation: 310

Try starting the session in the top of the script, and try to do all authentication before you have to do any operation. Also use the most recent API so you can use this libraries:

require_once '/src/Google/autoload.php';
require_once '/src/Google/Client.php';
require_once '/src/Google/Service/Oauth2.php';
require_once '/src/Google/Service/Drive.php';

Upvotes: 0

Related Questions