Drive Dosyalarını Listeleme

Google Drive Api’si, Drive içerisinde bulunan Google dökümanlarımıza ve dosyalarımıza erişmemizi sağlar. Bunun yanında drive içerisindeki dosyalar üzerinde değişiklik yapmamızı, dosyalarımızı indirmemizi veya drive üzerine dosya yüklememizi sağlar. Bu makalemizde Google Drive Api’sini kullanarak dosyalarımızı listeleyeceğiz. Drive apisinde listeleme işlemi yapmak için oAuth 2.0 yetkilendirmesini kullanmamız gerekir. Drive içerisindeki dosyalarımız herkese açık olduğu gibi bize özel dosyalar da barındıracağı için oAuth 2.0 izni gerekmektedir. Bu yetkilendirmeyi alarak access Token anahtarını üretmiş oluruz ve ardından Drive Apisini kullanarak dosyalarımızı kolay bir şekilde listeleyebiliriz.


Öncelikle bu apiyi kullanmamız için apiyi etkinleştirmemiz gerekiyor, OAuth 2.0 istemci kimliğine sahip olmanız ve Google Client Kütüphanelerini edinmiş olmamız gerekiyor bilgilendirme kategorisinin altındaki makalemizde Php ile OAuth 2.0 kullanma başlıklı makalemizde OAuth nasıl alındığını ve Kütüphaneleri nasıl yüklediğimiz anlatmıştık. Buraya tıklayarak Php ile OAuth 2.0 kullanımı makalesine gidebilir veya Genel Bilgilendirme kategorisine göz atabilirsiniz.


Google Drive Apisini Kullanmak için
  • console.developers.google.com’da Projemizi oluşturduk
  • Kullanacağımız apiyi etkinleştirdik
  • OAuth istemci kimliğini oluşturduk ve oluşturuken sitemize gerekli izinleri verdik.
  • OAuth istemci kimliğinin json dosyasını indirdik
  • GitHub dan Google Client Api kütüphanesini indirdik
  • Composer yardımıyla Vendor  klasörümüzü de edindik

Eğer bu işlemleri yapmadıysanız Buraya Tıklayarak OAuth Makalemi inceleyiniz. Bu işlemleri yaptıksak alt yapı hazır demektir şimdi aşağıdaki dosyalarımızı oluşturalım

  • index.php
  • oauth2callback.php

Şimdi fonksiyonumuza gelecek olursak Drive servisinden ürettiğimiz $drive değişkenine bakalım. Bu şekilde kullanarak drive üzerinde bulunan dosyalarımızın bilgilerini ayrıntılı şekilde $files değişkenine dizi olarak atadık.

$files = $drive->files->listFiles(array())->getFiles();

index.php dosyasının içerisine

<?php
require_once __DIR__.'/vendor/autoload.php';
session_start();
$client = new Google_Client();
$client->setAuthConfig('jsondrive.json');
$client->addScope(Google_Service_Drive::DRIVE_METADATA_READONLY);

if (isset($_SESSION['access_token']) && $_SESSION['access_token']) {
 $client->setAccessToken($_SESSION['access_token']);
 $drive = new Google_Service_Drive($client);
 $files = $drive->files->listFiles(array())->getFiles();
echo "<pre>";
 print_r($files);
} else {
 $redirect_uri = 'http://' . $_SERVER['HTTP_HOST'] . '/googleapi/oauth2callback.php';
 header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL));
}

oauth2callback.php dosyasını içerisine

<?php
require_once __DIR__.'/vendor/autoload.php';
session_start();

$client = new Google_Client();
$client->setAuthConfigFile('jsondrive.json');
$client->setRedirectUri('http://' . $_SERVER['HTTP_HOST'] . '/googleapi/oauth2callback.php');
$client->addScope(Google_Service_Drive::DRIVE_METADATA_READONLY);

if (! isset($_GET['code'])) {
 $auth_url = $client->createAuthUrl();
 header('Location: ' . filter_var($auth_url, FILTER_SANITIZE_URL));
} else {
 $client->authenticate($_GET['code']);
 $_SESSION['access_token'] = $client->getAccessToken();
 $redirect_uri = 'http://' . $_SERVER['HTTP_HOST'] . '/googleapi/';
 header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL));
}

Kodları kendinize göre düzenlemeniz gerekiyor.

Json dosyasının yolunu ve yönlendirilecek url bilgilerini düzenleyip çalıştırdığımızda karşımıza şöyle bir Array çıkacak

Arrayın içerisinde anadizinde ne kadar dosya varsa hepsinin bilgisini çekmiş olduk yukarıdaki resimde dosyaların sadece bir tanesinin bilgileri yer almaktadır. Ana dizinde veya diğer dizinlerde gezinerek tüm dosyaların bilgilerine erişebiliriz bunların ne kadar yer kapladığını öğrenebiliriz isimlerini paylaşıma açık olup olmadıklarını ayarlarını dosya tipini buna benzer bir çok bilgiye artık sahibiz.

 

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir