Kiedyś walczyłem z API Kalendarza i jakoś mi się udało w końcu odczytywać i zapisywać eventy, ale wymagało to udostępnienia kalendarza usłudze (ten dziwny adres typu nazwa@glass-tribute-123456.iam.gserviceaccount.com).

Teraz stanąłem znowu z podobnym problemem ale tutaj żadne udostępnianie nie wchodzi raczej w grę, a potrzebuje po prostu wgrywać i zarządzać plikami z poziomu Google Drive i znowu stanąłem na autoryzacji.
Nie chce zarządzać folderami użytkowników, a jedynie folderem z jednego, konkretnego, własnego konta Google. Nie chce (albo chce uniknąć) wyświetlenia prośby o udostępnienie danych.

  1. $client = new Google_Client();
  2. $client->setAuthConfig(APPPATH .'config/My Project-123456.json');
  3. $client->addScope(Google_Service_Drive::DRIVE_FILE);
  4. $service = new Google_Service_Drive($client);
  5. // $fileMetadata = new Google_Service_Drive_DriveFile(array(
  6. // 'name' => 'Invoices',
  7. // 'mimeType' => 'application/vnd.google-apps.folder'));
  8. //
  9. // $file = $service->files->create($fileMetadata, array(
  10. // 'fields' => 'id'));
  11. // printf("Folder ID: %s\n", $file->id);
  12.  
  13. print_r($service->files->listFiles(), 1);


Wygenerowałem credentiale z Google w formacie pliku json, podpiąłem i nawet ok. Działa tworzenie folderów i odczyt ale nie mam pojęcia gdzie się to tworzy biggrin.gif Domyślam się, że na koncie z tą dziwną nazwą ale ja chciałbym to samo robić na konkretnym koncie Google do którego mam dostęp albo przynajmniej chciałbym mieć możliwość zalogowania się do tego Drive'a, którego przypadkiem stworzyłem.

update:

Hmm.. Chyba jednak się udało znowu w taki sam sposób jak przy Google Calendar.

Zmieniłem SCOPE na:
$client->addScope(Google_Service_Drive::DRIVE);
i zalogowałem się mojego drive przez przeglądarkę i udostępniłem folder usłudze poprzez tego długiego e-maila gserviceaccount i działa, widzę pliki i foldery (z wszystkich udostępnionych usłudze folderów) z poziomu PHP.

Ale jestem i tak ciekaw jakby to miało być zrobione przez udostępniania folderu?