1. Google Workspace API'lerini kullanma
Bu codelab, Google Workspace'in (eski adıyla G Suite) HTTP tabanlı RESTful API'lerini kullanmaya başlamanıza yardımcı olur. Örnek, kısa olması ve kullanılabilirliği nedeniyle Python'da yapılacaktır ancak tercih ettiğiniz geliştirme dilini de kullanabilirsiniz. Geliştirici konsolunu kullanarak proje oluşturma/yönetme, yetkilendirme kimlik bilgilerini edinme ve API istemci kitaplıklarını yükleme gibi başlangıç konuları hakkında bilgi edineceksiniz. Gerekli işlemler tamamlandıktan sonra, Google Drive'daki ilk 100 dosya ve klasörü API'sini kullanarak görüntüleyen bir uygulama yazacaksınız.
Neler öğreneceksiniz?
- Google/Cloud Developers Console'u kullanarak proje oluşturma
- Uygulamanızda OAuth2 uygulama kimlik bilgilerini edinme ve kullanma
- Google API'leri İstemci Kitaplıkları'nı kullanma hakkında bilgi edinin.
- Google ve Google Workspace API'lerini kullanarak uygulamalar yazma
- Google Drive API ile dosya ve klasör bilgilerini edinme
İhtiyacınız olanlar
- İnternet erişimi ve web tarayıcısı
- Google Hesabı (Google Workspace hesapları için yönetici onayı gerekebilir)
- Linux ve Mac OS X gibi POSIX uyumlu sistemler hakkında bilgi sahibi olma
- Kod düzenleyici veya kabuk komutlarıyla kaynak dosyalar oluşturabilme.
- Python (2 veya 3) konusunda temel beceriler. Ancak desteklenen herhangi bir dili kullanabilirsiniz.
- Google Drive'ınızdaki bazı dosyalar ve/veya klasörler
2. Anket
Bu codelab eğitimini nasıl kullanacaksınız?
Google Workspace geliştirici araçları ve API'leriyle ilgili deneyiminizi nasıl değerlendirirsiniz?
3. Genel Bakış
Bu codelab'de şunları öğreneceksiniz:
- Python için Google API'leri istemci kitaplığını indirin.
- Google/Cloud Developers Console'da yeni bir proje oluşturun.
- Uygulamanız için gerekli kimlik bilgilerini alın
- Google Drive API'ye erişmek için bu kimlik bilgilerini kullanın.
Python kullanmak istemiyorsanız codelab'i tercih ettiğiniz geliştirme aracında (desteklenen dillerin istemci kitaplıkları burada mevcuttur) uygulayabilir ve Python örneklerini (yürütülebilir) sözde kod olarak değerlendirebilirsiniz.
4. Python ortamını onaylama
Bu codelab'de Python dilini kullanmanız gerekir (Google API'leri istemci kitaplıkları birçok dili desteklese de en sevdiğiniz geliştirme aracında eşdeğer bir şey oluşturabilir ve Python'u yalnızca sözde kod olarak kullanabilirsiniz). Bu codelab özellikle Python 2 ve 3'ü destekler ancak en kısa sürede 3.x'e geçmenizi öneririz.
Cloud Shell, kullanıcıların doğrudan Cloud Console'dan erişebileceği bir kolaylıktır ve yerel geliştirme ortamı gerektirmez. Bu nedenle, bu eğitim bir web tarayıcısıyla tamamen bulutta yapılabilir. Cloud Shell, özellikle GCP ürünleri ve API'leriyle geliştirme yapıyorsanız veya yapmaya devam etmeyi planlıyorsanız çok kullanışlıdır. Bu codelab'de Cloud Shell'e her iki Python sürümü de önceden yüklenmiştir.
Cloud Shell'de IPython da yüklüdür. Bu, özellikle veri bilimi veya makine öğrenimi topluluğunun bir parçasıysanız önerdiğimiz daha üst düzey bir etkileşimli Python yorumlayıcısıdır. Bu durumda, IPython, Google Research tarafından barındırılan Colab'in yanı sıra Jupyter Notebooks'un da varsayılan yorumlayıcısıdır.
IPython, öncelikle Python 3 yorumlayıcısını tercih eder ancak 3.x sürümü kullanılamıyorsa Python 2'ye geri döner. IPython'a Cloud Shell'den erişilebilir ancak yerel bir geliştirme ortamına da yüklenebilir. ^D (Ctrl-d) ile çıkın ve çıkma teklifini kabul edin. ipython ile başlayan örnek çıkış şu şekilde görünür:
$ ipython Python 3.7.3 (default, Mar 4 2020, 23:11:43) Type 'copyright', 'credits' or 'license' for more information IPython 7.13.0 -- An enhanced Interactive Python. Type '?' for help. In [1]:
IPython'ı tercih etmiyorsanız standart bir Python etkileşimli yorumlayıcı (Cloud Shell veya yerel geliştirme ortamınız) kullanmanız da uygundur (^D ile de çıkabilirsiniz):
$ python Python 2.7.13 (default, Sep 26 2018, 18:42:22) [GCC 6.3.0 20170516] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> $ python3 Python 3.7.3 (default, Mar 10 2020, 02:33:39) [GCC 6.3.0 20170516] on linux Type "help", "copyright", "credits" or "license" for more information. >>>
Bu codelab'de pip yükleme aracının (Python paket yöneticisi ve bağımlılık çözümleyici) yüklü olduğu da varsayılır. pip, 2.7.9 veya sonraki sürümler ya da 3.4 veya sonraki sürümlerle birlikte gelir. Daha eski bir Python sürümünüz varsa yükleme talimatları için bu kılavuza bakın. İzinlerinize bağlı olarak sudo veya süper kullanıcı erişimine sahip olmanız gerekebilir ancak genellikle bu durum geçerli değildir. Ayrıca, belirli Python sürümleri için pip komutunu çalıştırmak üzere pip2 veya pip3 komutunu açıkça kullanabilirsiniz.
Bu codelab'in geri kalanında Python 3 kullandığınız varsayılır. 3.x'ten önemli ölçüde farklılık gösteren Python 2'ye özel talimatlar verilir.
*Sanal ortamlar oluşturma ve kullanma
Bu bölüm isteğe bağlıdır ve yalnızca bu codelab için sanal ortam kullanması gerekenler (yukarıdaki uyarı kenar çubuğunda belirtildiği gibi) için gereklidir. Bilgisayarınızda yalnızca Python 3 varsa my_env adlı bir sanal ortam oluşturmak için bu komutu verebilirsiniz (isterseniz başka bir ad da seçebilirsiniz):
virtualenv my_env
Ancak bilgisayarınızda hem Python 2 hem de 3 varsa -p flag ile yapabileceğiniz bir Python 3 sanal ortamı yüklemenizi öneririz:
virtualenv -p python3 my_env
Yeni oluşturduğunuz virtualenv'yi şu şekilde "etkinleştirerek" girin:
source my_env/bin/activate
Kabuk isteminizin artık ortam adınızla başladığını gözlemleyerek ortamda olduğunuzu doğrulayın. Örneğin:
(my_env) $
Artık gerekli paketleri pip install, bu ortamda kod yürütebilirsiniz vb. Bir diğer avantajı da her şeyi tamamen berbat ederseniz, Python kurulumunuzun bozulduğu bir duruma gelirseniz vb. sisteminizin geri kalanını etkilemeden bu ortamın tamamını silebilirsiniz.
5. Python için Google API'leri istemci kitaplığını yükleme
Bu codelab'de Python için Google API'leri istemci kitaplığının kullanılması gerekir. Bu nedenle, basit bir yükleme işlemi yapmanız veya hiçbir şey yapmamanız gerekebilir.
Daha önce kolaylık sağlaması için Cloud Shell'i kullanmanızı önermiştik. Eğitimin tamamını buluttaki bir web tarayıcısından yapabilirsiniz. Cloud Shell'i kullanmanın bir diğer nedeni de birçok popüler geliştirme aracı ve gerekli kitaplığın zaten önceden yüklenmiş olmasıdır.
*İstemci kitaplıklarını yükleme
(İsteğe bağlı) Cloud Shell'i veya istemci kitaplıklarını daha önce yüklediğiniz bir yerel ortamı kullanıyorsanız bu adım atlanabilir. Bunu yalnızca yerel olarak geliştirme yapıyorsanız ve bunları yüklemediyseniz (veya yüklediğinizden emin değilseniz) yapmanız gerekir. Yükleme işlemini (gerekirse pip'yı güncelleme dahil) yapmanın en kolay yolu pip (veya pip3) kullanmaktır:
pip install -U pip google-api-python-client oauth2client
Kurulumu onaylama
Bu komut, istemci kitaplığının yanı sıra bağlı olduğu tüm paketleri yükler. Cloud Shell'i veya kendi ortamınızı kullanıyor olsanız da gerekli paketleri içe aktararak istemci kitaplığının yüklendiğini doğrulayın ve içe aktarma hatası (veya çıkış) olmadığını onaylayın:
python3 -c "import googleapiclient, httplib2, oauth2client"
Bunun yerine Python 2'yi (Cloud Shell'den) kullanırsanız desteğinin sonlandırıldığına dair bir uyarı alırsınız:
******************************************************************************* Python 2 is deprecated. Upgrade to Python 3 as soon as possible. See https://cloud.google.com/python/docs/python2-sunset To suppress this warning, create an empty ~/.cloudshell/no-python-warning file. The command will automatically proceed in seconds or on any key. *******************************************************************************
İçe aktarma "test" komutunu başarıyla çalıştırabildiğinizde (hata/çıkış yok) Google API'leriyle iletişim kurmaya başlayabilirsiniz.
Özet
Bu bir başlangıç seviyesi codelab olduğundan Google ve Google Workspace API'lerini yeni kullanmaya başladığınız varsayılır. Daha önce proje oluşturma ve kullanıcı yetkilendirme "OAuth istemci kimlikleri" oluşturma konusunda deneyiminiz varsa. Bu durumda, yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanın, yeni bir OAuth istemci kimliği oluşturun veya mevcut bir OAuth istemci kimliğini yeniden kullanın ve sonraki iki modülü atlayıp doğrudan "Drive dosyalarınızı ve klasörlerinizi görüntüleme uygulaması" bölümüne gidin ya da bu adımları daha az rehberlikle incelemek için "Gelişmiş geliştirici konsolu kullanımı" bölümüne atlayın.
6. Cloud Console'da projeyi belirtin
Google API'lerini kullanan bir uygulama için proje gerekir. Bunlar Google Cloud Developers Console'da veya kısaca "devconsole"da yönetilir. Bu codelab'de yalnızca Google Drive API'yi kullanacağımız için aşağıdaki sihirli bağlantıyı (1. adımda) kullanacağız:
- Sizi devconsole'a yönlendirir.
- Yeni bir proje oluşturma (veya mevcut bir projeyi seçme) konusunda size yol gösterir.
- Drive API'yi otomatik olarak etkinleştirir.
Hadi başlayalım!
- console.developers.google.com/start/api?id=drive adresine gidip Google Hesabınızda oturum açın.
- Henüz projeniz yoksa Google API'leri Hizmet Şartları'nı kabul etmek için bu ekranı görürsünüz:
Şartları kabul ettiğinizde "Projem" adlı yeni bir proje oluşturulur ve Drive API otomatik olarak etkinleştirilir. 3. Bunun yerine, daha önce bir proje oluşturduysanız (örneğin, önceki codelab'iniz) şu ekranı görürsünüz:
Proje oluştur açılır listesini tıkladığınızda mevcut bir projeyi seçin veya yeni bir proje oluşturun.
Seçiminizi (yeni veya mevcut proje) yaptıktan sonra Drive API sizin için otomatik olarak etkinleştirilir. 4. Drive API'nin etkinleştirildiğini şu onay mesajıyla anlarsınız:
5. Sonraki adıma geçmek için Kimlik bilgilerine git'i tıklayın.
7. *API isteklerini yetkilendirme (kullanıcı yetkilendirmesi)
Daha önce kullanıcı hesabı yetkilendirme kimlik bilgileri oluşturduysanız ve süreci biliyorsanız bu bölümü atlayabilirsiniz. Bu, tekniği farklı olan hizmet hesabı yetkilendirmesinden farklıdır. Lütfen aşağıdan devam edin.
Yetkilendirmeye giriş (ve biraz kimlik doğrulama)
API'lere istek gönderebilmek için uygulamanızın uygun yetkilendirmeye sahip olması gerekir. Benzer bir kelime olan kimlik doğrulama, giriş kimlik bilgilerini ifade eder. Google Hesabınıza giriş yaparken kullanıcı adı ve şifreyle kimliğinizi doğrularsınız. Kimlik doğrulama tamamlandıktan sonraki adım, veriye erişmek için yetkili olup olmadığınızı (daha doğrusu kodunuzun yetkili olup olmadığını) belirlemektir. Bu veriler, Cloud Storage'daki blob dosyaları veya Google Drive'daki kullanıcının kişisel dosyaları gibi veriler olabilir.
Google API'leri çeşitli yetkilendirme türlerini destekler ancak bu codelab'deki örnek uygulama son kullanıcılara ait verilere eriştiği için Google Workspace API kullanıcıları için en yaygın olanı kullanıcı yetkilendirmesidir. Bu tür son kullanıcılar, uygulamanızın verilerine erişmesine izin vermelidir. Bu nedenle, kodunuzun kullanıcı hesabı OAuth2 kimlik bilgilerini alması gerekir.
Kullanıcı yetkilendirmesi için OAuth2 kimlik bilgilerini almak üzere API yöneticisine geri dönün ve sol gezinme çubuğunda "Kimlik bilgileri" sekmesini seçin:
İlgili sayfaya ulaştığınızda tüm kimlik bilgilerinizi üç ayrı bölümde görürsünüz:
Birincisi API anahtarları, ikincisi OAuth 2.0 istemci kimlikleri ve sonuncusu OAuth2 hizmet hesapları içindir. Ortadaki seçeneği kullanıyoruz.
Kimlik bilgisi oluşturma
Kimlik Bilgileri sayfasında, üst kısımdaki + Kimlik Bilgileri Oluştur düğmesini tıklayın. Bu işlem, "OAuth istemci kimliği:" seçeneğini belirleyeceğiniz bir iletişim kutusu açar.
Sonraki ekranda 2 işlem yapabilirsiniz: Uygulamanızın yetkilendirme "kullanıcı rızası ekranını" yapılandırma ve uygulama türünü seçme:
Kullanıcı rızası ekranı ayarlamadıysanız konsolda uyarıyı görürsünüz ve şimdi ayarlamanız gerekir. (Kullanıcı rızası ekranınız zaten ayarlandıysa sonraki adımları atlayın.)
OAuth izin ekranı
"Kullanıcı rızası ekranını yapılandır"ı tıklayın. Burada "Harici" bir uygulama seçersiniz (veya Google Workspace [eski adıyla "Google Workspace"] müşterisiyseniz "Dahili"yi seçersiniz):
Bu alıştırma kapsamında, codelab örneğinizi yayınlamadığınız için hangisini seçtiğinizin önemli olmadığını unutmayın. Çoğu kişi daha karmaşık bir ekrana yönlendirilmek için "Harici"yi seçer ancak aslında yalnızca en üstteki "Uygulama adı" alanını doldurmanız gerekir:
Şu anda ihtiyacınız olan tek şey bir uygulama adı. Bu nedenle, yaptığınız codelab'i yansıtan bir ad seçin ve Kaydet'i tıklayın.
OAuth istemci kimliği oluşturma (kullanıcı hesabı yetkilendirme)
Şimdi OAuth2 istemci kimliği oluşturmak için Kimlik Bilgileri sekmesine geri dönün. Burada oluşturabileceğiniz çeşitli OAuth istemci kimliklerini görürsünüz:
Diğer kategorisinde bir komut satırı aracı geliştiriyoruz. Bu nedenle, bu seçeneği belirleyip Oluştur düğmesini tıklayın. Oluşturduğunuz uygulamayı yansıtan bir istemci kimliği adı seçin veya genellikle "Diğer istemci N" olan varsayılan adı kullanın.
Kimlik bilgilerinizi kaydetme
- Yeni kimlik bilgilerini içeren bir iletişim kutusu gösterilir. Kapatmak için Tamam'ı tıklayın.
- Kimlik Bilgileri sayfasına geri dönün, "OAuth2 İstemci Kimlikleri" bölümüne gidin ve yeni oluşturduğunuz istemci kimliğinizin en sağ alt kısmındaki indirme simgesini
tıklayın.
- Bu işlem,
client_secret-LONG-HASH-STRING.apps.googleusercontent.com.jsonadlı bir dosyayı kaydetmek için bir iletişim kutusu açar. Bu dosya, büyük olasılıkla İndirilenler klasörünüze kaydedilir.client_secret.jsongibi daha kolay bir adla kısaltmanızı (örnek uygulamada kullanılan ad) ve ardından bu codelab'de örnek uygulamayı oluşturacağınız dizine/klasöre kaydetmenizi öneririz.
Özet
Kimlik bilgilerini edindikten sonra, OAuth istemci kimliğinin amacının, kullanıcılarınızın Google Drive'daki verilerine erişmek için uygulamanıza izin vermesi olduğunu unutmadan uygulamanızdan Drive API'ye erişmeye hazırsınız.
NOTE: Proje oluşturma, API'leri etkinleştirme ve kimlik bilgilerini manuel olarak (yani yukarıdaki "sihirbaz" kullanılmadan) edinme hakkında daha fazla bilgi edinmek için bu codelab'in sonunda ek kaynaklara göz atabilirsiniz.
8. Drive dosya ve klasörleri uygulamanızı görüntüleme
İster yerel geliştirme ortamınızda ister Cloud Shell'de client_id.json kimlik bilgileri dosyanızın bulunduğu dizinde drive_list.py adlı yeni bir Python dosyası oluşturun ve aşağıdaki kod satırlarını ekleyin:
from __future__ import print_function
from googleapiclient import discovery
from httplib2 import Http
from oauth2client import file, client, tools
SCOPES = 'https://www.googleapis.com/auth/drive.readonly.metadata'
store = file.Storage('storage.json')
creds = store.get()
if not creds or creds.invalid:
flow = client.flow_from_clientsecrets('client_id.json', SCOPES)
creds = tools.run_flow(flow, store)
DRIVE = discovery.build('drive', 'v3', http=creds.authorize(Http()))
files = DRIVE.files().list().execute().get('files', [])
for f in files:
print(f['name'], f['mimeType'])
Uygulama yapısı
Bu uygulamanın üç ana bölümü vardır:
- Kitaplık işlevlerini kullanmak için Python içe aktarmaları
- Uygulama kimlik bilgilerini edinme
- Kullanıcının Google Drive'ındaki dosya ve klasör adlarını ve MIME türlerini getirme ve görüntüleme
NOTE: Bu Codelab'in sonunda, daha ayrıntılı inceleme için kodun daha derinlemesine incelenmesi ve satır satır açıklanması sağlanır.
Uygulamayı çalıştırma
Bu dosyayı drive_list.py gibi bir adla kaydedin. Komut dosyasını ilk kez çalıştırdığınızda, kullanıcının Drive'daki (sizin) dosyalarına erişme yetkisi olmaz. Yürütme duraklatıldığında çıkış şu şekilde görünür:
$ python3 ./drive_list.py /usr/local/lib/python3.6/site-packages/oauth2client/_helpers.py:255: UserWarning: Cannot access storage.json: No such file or directory warnings.warn(_MISSING_FILE_MESSAGE.format(filename)) Your browser has been opened to visit: https://accounts.google.com/o/oauth2/auth?client_id=LONG-STRING.apps.googleusercontent.com&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2F&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.readonly.metadata&access_type=offline&response_type=code If your browser is on a different machine then exit and re-run this application with the command-line parameter --noauth_local_webserver
Yerel geliştirme ortamından
Bir tarayıcı penceresi açılıp OAuth2 izinleri iletişim kutusu gösterildiğinde komut satırı komut dosyası duraklatılır:

Uygulama, kodun istediği izinleri (SCOPES değişkeni aracılığıyla) kullanıcıdan bu noktada ister. Bu durumda, kullanıcının Google Drive'ındaki dosya meta verilerini görüntüleme özelliği söz konusudur. Evet, kodunuzda bu izin kapsamları URI olarak görünür ancak OAuth2 akışı iletişim kutusu penceresinde yerel ayarınız tarafından belirtilen dile çevrilir. Kullanıcı, istenen izinler için açıkça yetki vermelidir. Aksi takdirde kodun "akışı çalıştırma" bölümü istisna oluşturur ve komut dosyası daha fazla ilerlemez.
NOTE: Bazı kullanıcıların birden fazla tarayıcısı vardır ve yetkilendirme isteği, tercih edilmeyen bir tarayıcıda açılıyor olabilir. Bu durumda, kullanmak istemediğiniz tarayıcı penceresindeki URL'nin tamamını kopyalayıp kullanmak istediğiniz bir tarayıcının adres çubuğuna yapıştırın.
Cloud Shell'den
Dikkatinizi vermeden programı Cloud Shell'de çalıştırdıysanız tarayıcı penceresi açılmadığı için takılıp kalırsınız. En alttaki teşhis mesajının sizin için olduğunu fark edin. Bu mesaj:
If your browser is on a different machine then exit and re-run this application with the command-line parameter --noauth_local_webserver
Bu şekilde çalıştırdığınızda bunun yerine aşağıdaki çıkışı alırsınız:
$ python3 drive_list.py --noauth_local_webserver /usr/local/lib/python3.7/site-packages/oauth2client/_helpers.py:255: UserWarning: Cannot access storage.json: No such file or directory warnings.warn(_MISSING_FILE_MESSAGE.format(filename)) Go to the following link in your browser: https://accounts.google.com/o/oauth2/auth?client_id=xxx.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.readonly.metadata&access_type=offline&response_type=code Enter verification code:
Talimatları uygulayıp bu URL ile farklı bir tarayıcı sekmesine gittiğinizde, yerel geliştirme ortamları için yukarıda açıklanan deneyime neredeyse tamamen benzer bir deneyim elde edersiniz. Temel fark, Cloud Shell'e girilecek doğrulama kodunun yer aldığı bir ekranın daha gösterildiği son aşamada ortaya çıkar:

Bu kodu kesip terminal penceresine yapıştırın.
Özet
Kullanıcı izin ver'i tıkladıktan ve/veya doğrulama kodu isteme yapıştırıldıktan sonra uygulama (çalışmaya devam eder). Bu nedenle, Drive dosyaları/klasörleri ve bunların MIME türlerinden oluşan bir çıktı görmeyi bekleyebilirsiniz. Test hesaplarımızdan birinde yer alan örneği aşağıda görebilirsiniz:
$ python3 ./drive_list.py Travel expenses application/vnd.google-apps.spreadsheet Gmail Add-ons codelab application/vnd.google-apps.script Google Workspace Developer Intro application/vnd.google-apps.presentation Baseball Sheets application/vnd.google-apps.folder My Resume application/vnd.google-apps.document . . .
Birbirini izleyen yürütmelerde, yetkilendirme kitaplıkları tarafından önbelleğe alındığı için artık yetkilendirme istemiyle karşılaşmadığınızı ve doğrudan çıkışa gittiğinizi fark edeceksiniz. Dokümanlarınızı ilk kez bir terminalde görmek heyecan verici değil mi? Biz de öyle düşünüyoruz.
9. Sonuç
Artık Drive API'nin diğer özellikleri hakkında daha fazla bilgi edinmeye veya diğer Google Workspace (Gmail, Google Dokümanlar, E-Tablolar, Slaytlar, Takvim) ve diğer Google API'lerini (Haritalar, Analytics, YouTube vb.) keşfetmeye hazırsınız. Sonuna kadar geldiğiniz için tebrikler.
Bu codelab'de gösterilen kodlar, github.com/googlecodelabs/gsuite-apis-intro adresindeki ilgili GitHub kod deposunda da bulunabilir. (Bu Codelab'i, kod deposuyla senkronize tutmayı amaçlıyoruz.) Devam etmeye hazır mısınız? Bu codelab'de ele alınan materyalleri daha ayrıntılı bir şekilde incelemenize veya zihninizi zorlayıp Google teknolojilerine programatik olarak erişmenin diğer yollarını keşfetmenize yardımcı olacak çeşitli kaynaklara aşağıdan erişebilirsiniz.
Daha önce de belirttiğimiz gibi, düzenli bir Python geliştiricisi değilseniz bu codelab örneğini en sevdiğiniz geliştirme dilinde yeniden yapmaya davet ediyoruz. Desteklenen diller için istemci kitaplıklarını burada bulabilirsiniz.
Ek Çalışma
Drive API ile ilgili biraz deneyim kazandığınıza göre becerilerinizi daha da geliştirmek için aşağıdaki alıştırmaları yapmanızı öneririz:
- ZIP dosyaları: Birden fazla ZIP arşivini Drive'a yedekleyen, bunları anında açan ve her ZIP dosya adının, dosyaların içine yerleştirildiği klasörün adı olduğu bir uygulama yazın. EKSTRA KREDİ: Drive klasörlerinin diğer klasörlere yerleştirildiği durumlarda, diğer ZIP dosyaları içindeki yinelemeli ZIP arşivlerini destekleyin. Pes ederseniz bu Node.js örnek uygulamasına bakın.
- Fotoğraf albümleri: Birden fazla resmi Google Drive'a yükleyip zaman damgası ve coğrafi konuma göre ayrı klasörler halinde düzenleyen bir fotoğraf albümü oluşturma aracının başlangıcını yaz. EKSTRA KREDİ: Açık kaynaklı bir görüntü işleme kitaplığı bulun ve her klasördeki tüm fotoğrafları birleştirerek yaşadığınız etkinlikleri (ör. gezi, akşam yemeği) temsil edin.
- GCP'yi keşfedin: Google Workspace ile Google Cloud Platform'u (GCP) birbirine bağlayan bir uygulama yazın. Google Drive'daki resim dosyalarını Google Cloud Storage'a (GCS) yedekleyen bir araç yazın. GCS, "bulutta dosya depolama" çözümlerinden biridir. GCS'nin gelişmiş istemci kitaplıkları sayesinde Drive'dan daha kolay kullanılacağını biliyor muydunuz?
- Analiz etme ve kaydetme: Google Cloud Vision API'ye ileterek ve API'nin bu resimlerde gördüğü en iyi (3, 5, 10) "etiketleri" alarak yedeklenen her resmi analiz ederek çözümünüzü 3. adıma taşıyın. Her görüntü için, Cloud Vision'dan alınan analizi ve GCS'deki yedeklenen konumunu içeren bir Google E-Tablosu satırı yazın. Pes ederseniz bu Python codelab'ine göz atın.
10. Ek Kaynaklar
Belgeler
- Google Drive API belgeleri (REST API ve Android yerel SDK/API)
- Diğer Google Workspace API'leri belgeleri
- Diğer Google API'leri belgeleri
- Google API'leri istemci kitaplıkları
- OAuth2 dokümanları
Benzer ve genel amaçlı videolar
- Yeni Google API projeleri oluşturma ( blog yayını ve video)
- Python yetkilendirme ortak metin kodu incelemesi ( video)
- Dosyalarınızı Google Drive'da listeleme ( video, blog yayını)
- Google Drive API video kitaplığı
- Launchpad Online video serisi (önceki sürüm)
- Google Workspace Geliştirici Şovu video serisi
Haberler ve güncellemeler
- Google Workspace geliştiricileri blogu
- Google Workspace geliştiricileri Twitter hesabı (@GSuiteDevs)
- Google Workspace geliştiricileri aylık bülteni
Diğer Codelab'ler
Giriş
- [Apps Komut Dosyası] Google Apps Komut Dosyası'na giriş
Orta düzey
- [Apps Komut Dosyası] CLASP Apps Komut Dosyası komut satırı aracı
- [Apps Komut Dosyası] Gmail Eklentileri
- [Apps Komut Dosyası] Dokümanlar eklentisi ve GCP Natural Language API
- [Apps Komut Dosyası] Hangouts Chat bot çerçevesi
- [REST API'ler] Özel raporlama aracı (Sheets API)
- [REST API'leri] Github lisansı BigQuery analizörü için özel slayt oluşturucu (Slaytlar + BigQuery API'leri)
Gelişmiş
- [REST API'leri] Bulutta görüntü işleme iş akışı (Drive, Cloud Storage, Cloud Vision, E-Tablolar API'leri)
Referans uygulamalar
- Markdown'dan Google Slaytlar'a dönüştürücü (Slides REST API)
11. *Uygulama ayrıntılı açıklaması
Bu isteğe bağlı bölüm, oturum sona erdikten sonra ortaya çıkmış olabilecek eksiklikleri gidermek veya daha fazla araştırma yapmak için kendi kendine çalışma amacıyla kullanılmalıdır.
Kitaplık işlevlerini kullanmak için Python içe aktarmaları
from __future__ import print_function
from googleapiclient import discovery
from httplib2 import Http
from oauth2client import file, client, tools
- İlk
importifadesi, bu kodun Python 2'de çalışmasını sağlar. Yalnızca Python 3 kullanıyorsanız bu ifade tamamen kaldırılabilir. - Python stil kurallarından biri, standart kitaplık ve üçüncü taraf modülü içe aktarmalarını ayırmaktır. Boş satır bu amaçla kullanılır.
- Sonraki üç içe aktarma işlemi, Google API'leri istemci kitaplığından gerekli sınıfları ve işlevleri getirir. Bu uygulamayı yazabilmemiz için bunların tümü gereklidir. Kısaca, bu sınıflar ve işlevler şunları yapar:
googleapiclient, Google API'lerine bağlanmaya odaklanır.httplib2, uygulamanın kullanması için bir HTTP istemcisi sağlaroauth2client, OAuth2 kimlik bilgilerini yönetmemize yardımcı olur.
Yetkilendirme ve uygulama kimlik bilgilerini edinme
SCOPES = 'https://www.googleapis.com/auth/drive.readonly.metadata'
store = file.Storage('storage.json')
creds = store.get()
if not creds or creds.invalid:
flow = client.flow_from_clientsecrets('client_id.json', SCOPES)
creds = tools.run_flow(flow, store)
DRIVE = discovery.build('drive', 'v3', http=creds.authorize(Http()))
- Uygulama
SCOPES, bir uygulamanın çalıştırılırken kullanıcıdan isteyeceği izinlerdir. Uygulamalar, kullanıcı verilerinin güvenliğini sağlamak için izin verilmeden çalışamaz. - En iyi uygulama, uygulamanızın çalışması için gereken en kısıtlayıcı izinleri kullanmaktır. Neden?
- Bir uygulamayı yüklediğinizde veya çalıştırdığınızda çok sayıda izin istemesi can sıkıcı değil mi? Bil bakalım ne oldu? Artık madalyonun diğer tarafındasınız ve kullanıcılarınızdan tüm bu izinleri istiyorsunuz. Daha kısıtlayıcı kapsamlar kullanmak, daha az erişim istediğiniz için kullanıcıların uygulamanızı yükleme konusunda kendilerini daha iyi hissetmelerini sağlar.
- Kapsamların çoğu uzun URL'ler gibi görünür ve Drive meta verileri kapsamı da bu duruma dahildir.
SCOPES = 'https://www.googleapis.com/auth/drive.readonly.metadata'
- Uygulamaların Google sunucularıyla iletişim kurması için jeton gerekir. Google'dan gelen geçerli jetonlar, jeton depolama dosyasına (
storage.json) kaydedilir. Bu jetonları kaydetmezseniz uygulamanızı her çalıştırdığınızda yeniden yetkilendirmeniz gerekir.
store = file.Storage('storage.json')
- Bu uygulama, öncelikle depolama alanında geçerli kimlik bilgilerinin olup olmadığını kontrol eder (
ifkoşullu ifadesine bakın).
creds = store.get()
if not creds or creds.invalid:
- Kimlik bilgileriniz yoksa veya süresi dolmuşsa, indirdiğiniz
client_id.jsondosyasındaki OAuth istemci kimliğiniz ve gizli anahtarınızdan [oauth2client.client.flow_from_clientsecrets()aracılığıyla] yeni bir yetkilendirme akışı oluşturulmalıdır.
if not creds or creds.invalid:
flow = client.flow_from_clientsecrets('client_id.json', SCOPES)
- Uygulamanızda bir akış olduğunda, yukarıda açıklanan ve gösterilen [
oauth2client.tools.run_flow()] aracılığıyla OAuth2 izin ekranını kullanıcıya sunmak için bu akışın yürütülmesi gerekir.
creds = tools.run_flow(flow, store)
- Kullanıcılar İzin ver'i tıklayarak uygulamanızın Google Drive dosya meta verilerine erişmesine izin verir ve Google sunucuları, API'ye erişmek için jeton döndürür. Bunlar
credsolarak döndürülür vestorage.jsondosyasına önbelleğe alınır. - Bu noktada uygulamanız artık API çağrıları yapmak için geçerli kimlik bilgilerine sahip.
googleapiclient.discovery.build()çağrısı, kullandığınız API için bir hizmet uç noktası oluşturur. build()kullanmak için API adını ('drive') ve istenen sürümü (şu anda'v3') iletin.- Son parametre, şifrelenmiş API çağrıları için kullanılacak bir HTTP istemcisidir.
DRIVE = discovery.build('drive', 'v3', http=creds.authorize(Http()))
İlk 100 Drive dosyasını/klasörünü ve MIME türünü getirme ve görüntüleme
files = DRIVE.files().list().execute().get('files', [])
for f in files:
print(f['name'], f['mimeType'])
- Bir sonraki kod satırı, isteği oluşturmak için Drive API'nin
files()koleksiyonundakilist()yöntemini çağırır. Bu istek,execute()ile hemen çağrılır. Kullanıcının Google Drive'ındaki 100 dosya ve klasör adını (daha az dosyanız varsa daha az) almak için'files'anahtarını istediğimiz bir Pythondictdöndürülür. - Neden 100? Bu,
DRIVE.files().list()'daki varsayılan ayardır. Bu sayıyı değiştirmek (ör. yalnızca 10 dosya veya 1.000 dosya) istiyorsanız isteğinizepageSizeparametresini ekleyin:DRIVE.files().list(pageSize=10). Diğer seçenekler için dokümanları inceleyin. - Komut dosyasının son bölümü, her dosyayı döngüye alır ve adlarını ile dosya MIME türlerini gösterir.
Google REST API'yi kullanan ilk uygulamanızı yazdınız. Tebrikler! İçe aktarma ve yetkilendirme kodu dışında bu komut dosyası aslında yalnızca birkaç satır koddan (yukarıda gördüğünüz) oluşur. Çoğu Google API'si benzer şekilde çalışır ve yalnızca kullanmak istediğiniz her API için hizmet uç noktaları oluşturmanız gerekir.
Bir uygulamada birden fazla Google API'si kullanma
Evet, aynı uygulamada birden fazla API kullanabilirsiniz. Aynı HTTP istemcisini yeniden kullanan ve üç Google API'si için hizmet uç noktaları oluşturan bir uygulama için Python kod snippet'i (evet, 3 farklı SCOPES ile birlikte) aşağıda verilmiştir:
SCOPES = (
'https://www.googleapis.com/auth/drive',
'https://www.googleapis.com/auth/spreadsheets.readonly',
'https://www.googleapis.com/auth/presentations',
)
. . .
HTTP = creds.authorize(Http())
DRIVE = discovery.build('drive', 'v3', http=HTTP)
SHEETS = discovery.build('sheets', 'v4', http=HTTP)
SLIDES = discovery.build('slides', 'v1', http=HTTP)
Bu kodun, e-tablo verilerine (Sheets API) dayalı olarak birden fazla slayt destesi (Slides API) oluşturan ve oluşturulan her deste için kopyalanan (Drive API) bir slayt şablonu kullanan bir uygulamanın parçası olabileceğini düşünüyoruz. Böyle bir uygulama olmasa da Google Workspace ekibinin yapı taşı olarak oluşturduğu iki mevcut örneği kullanarak benzer bir uygulama oluşturabilirsiniz:
- Slaytlardaki metin ve resimleri değiştirme ( blog yayını ve video): Slayt şablonu destesini kopyalamak için Drive API'yi, metin ve resim yer tutucularını değiştirmek için ise Slaytlar API'sini kullanır.
- E-tablo verilerinden slayt oluşturma ( blog yayını ve video): E-tablodaki verileri (Sheets API) okur ve bu verilere dayalı olarak slaytlar (Slides API) oluşturur.
Yarışma konusu: Bu uygulamayı geliştirin.
12. *Gelişmiş geliştirici konsolu kullanımı
Bu isteğe bağlı bölümde, codelab'deki gibi sihirbazı kullanmadan devconsole'da nasıl proje oluşturacağınız, API'leri nasıl etkinleştireceğiniz ve kimlik bilgilerini nasıl alacağınız açıklanmaktadır. Bu yöntem, manuel olarak yapmaya alışkın olan veya nasıl yapılacağını öğrenmek isteyen orta seviye kullanıcılar içindir.
Cloud Console'da projeyi belirtin
Google API'lerini kullanarak bir uygulama yazdığınız her seferde bir projenizin olması gerekir. Mevcut bir projeyi yeniden kullanabilir veya yeni bir proje oluşturabilirsiniz. Bu işlem Cloud Console'da yapılır. Bazı codelab'ler, gerekli adımların çoğunu atlayarak hızlı bir şekilde başlamanızı sağlayan sihirli bağlantılar (ör. kurulum sihirbazı gibi) sunar. Ancak bu özelliklerin tümü desteklenmez. Bu nedenle, projelerin nasıl oluşturulacağına dair genel talimatlar verilmektedir.
Google kimlik bilgilerinizle giriş yaptığınız ve konsolun üst kısmında bir proje açılır menüsü gördüğünüz sürece Cloud Console'daki çoğu ekrandan proje oluşturabilirsiniz. Buradaki çoğu ekran görüntüsünün API Yöneticisi'nden (diğer adıyla Developers Console) alındığını unutmayın. API Yöneticisi'ne sol gezinme çubuğunda "API yöneticisi"ni tıklayarak veya tarayıcınızı doğrudan console.developers.google.com adresine yönlendirerek kolayca ulaşabilirsiniz.
- Henüz projeniz yoksa şuraya yönlendirilebilirsiniz:
- Kontrol paneli sayfası:
- Kitaplık sayfası:
- veya tamamen boş bir sayfa:
Bu üçüncü durumla karşılaşırsanız Kitaplık sayfasına yönlendirilmek için tarayıcıyı yenilemeniz yeterlidir.
- Kontrol paneli veya Kitaplık sayfalarında olmanız fark etmeksizin sayfanın üst kısmındaki proje seçiciyi tıklayın:
- Ardından, seçici iletişim kutusu gösterilir. Yeni bir proje oluşturmak için sağ taraftaki "+" simgesini tıklayın:
- "+"yı tıkladıktan sonra Yeni Proje sayfası görünür. Tüm tüketici hesapları varsayılan olarak 12 proje alır. İlk projenizi oluşturmadan önce Google API'leri Hizmet Şartları'nı kabul etmeniz gerekir:
Bu işlemi yaptıktan sonra, gelecekteki projeleri oluştururken e-posta isteği ve Hizmet Şartları soruları gösterilmez:
5. Geçmişte en az bir proje oluşturduysanız giriş yaptıktan sonra üzerinde çalıştığınız son projenin kontrol paneline yönlendirilirsiniz. Buradan, Bir proje seçin > +'yı seçerek yeni bir proje oluşturun. 6. Yeni projeniz oluşturulduktan sonra Kontrol paneli sayfasına geri dönersiniz:
Artık projeyi başarıyla oluşturdunuz ve projenizde kullanmak istediğiniz API'leri seçerek devam etmeye hazırsınız.
Google API'lerini etkinleştirme
Google API'lerini kullanmaya başlamadan önce etkinleştirmeniz gerekir. Aşağıdaki örnekte, Cloud Vision API'yi etkinleştirmek için yapmanız gerekenler gösterilmektedir. Bu codelab'de bir veya daha fazla API kullanabilirsiniz. Bu API'leri kullanmadan önce etkinleştirmek için benzer adımları uygulamanız gerekir.
Cloud Shell'den
Cloud Shell'i kullanarak aşağıdaki komutla API'yi etkinleştirebilirsiniz:
gcloud services enable vision.googleapis.com
Cloud Console'dan
Vision API'yi API Yöneticisi'nden de etkinleştirebilirsiniz. Cloud Console'dan API Yöneticisi'ne gidip "Kitaplık"ı seçin.
Arama çubuğuna "vision" yazmaya başlayın ve ekranda göründüğünde Vision API'yi seçin. Yazarken şöyle bir şey görebilirsiniz:
Aşağıdaki iletişim kutusunu almak için Cloud Vision API'yi seçin, ardından "Etkinleştir" düğmesini tıklayın:
Maliyet
Birçok Google API'si ücretsiz olarak kullanılabilirken GCP (ürünler ve API'ler) kullanımı ücretsiz değildir. Vision API'yi etkinleştirirken (yukarıda açıklandığı gibi) etkin bir faturalandırma hesabı istenebilir. Kullanıcı, özelliği etkinleştirmeden önce Vision API'nin fiyatlandırma bilgilerine başvurmalıdır. Belirli Google Cloud Platform (GCP) ürünlerinde, faturalandırma için aşmanız gereken bir "Daima Ücretsiz" katmanı bulunduğunu unutmayın. Bu codelab'in amaçları doğrultusunda, Vision API'ye yapılan her çağrı ücretsiz katman kapsamında değerlendirilir ve her ay bu katmanın sınırları içinde kaldığınız sürece herhangi bir ücret alınmaz.
Bazı Google API'leri (ör. Google Workspace'in kullanımı aylık abonelikle karşılanır. Bu nedenle, örneğin Gmail, Google Drive, Takvim, Dokümanlar, E-Tablolar ve Slaytlar API'lerinin kullanımı için doğrudan faturalandırma yapılmaz. Farklı Google ürünleri için farklı şekilde faturalandırma yapılır. Bu nedenle, ilgili bilgileri API'nizin belgelerinde bulabilirsiniz.
Özet
Bu codelab'de yalnızca Google Drive API'yi etkinleştirmeniz gerekir. Bu nedenle, yukarıdaki talimatları uygulayın ve "Drive"ı arayın. Etkinleştirildikten sonra devam edin.
API isteklerini yetkilendirme (kullanıcı yetkilendirmesi)
Yetkilendirmeye giriş (ve biraz kimlik doğrulama)
API'lere istek gönderebilmek için uygulamanızın uygun yetkilendirmeye sahip olması gerekir. Benzer bir kelime olan kimlik doğrulama, giriş kimlik bilgilerini ifade eder. Google Hesabınıza giriş yaparken kullanıcı adı ve şifreyle kimliğinizi doğrularsınız. Kimlik doğrulama tamamlandıktan sonraki adım, veriye erişmek için yetkili olup olmadığınızı (daha doğrusu kodunuzun yetkili olup olmadığını) belirlemektir. Bu veriler, Cloud Storage'daki blob dosyaları veya Google Drive'daki kullanıcının kişisel dosyaları gibi veriler olabilir.
Google API'leri çeşitli yetkilendirme türlerini destekler ancak bu codelab'deki örnek uygulama son kullanıcılara ait verilere eriştiği için Google Workspace API kullanıcıları için en yaygın olanı kullanıcı yetkilendirmesidir. Bu tür son kullanıcılar, uygulamanızın verilerine erişmesine izin vermelidir. Bu nedenle, kodunuzun kullanıcı hesabı OAuth2 kimlik bilgilerini alması gerekir.
Kullanıcı yetkilendirmesi için OAuth2 kimlik bilgilerini almak üzere API yöneticisine geri dönün ve sol gezinme çubuğunda "Kimlik bilgileri" sekmesini seçin:
İlgili sayfaya ulaştığınızda tüm kimlik bilgilerinizi üç ayrı bölümde görürsünüz:
Birincisi API anahtarları, ikincisi OAuth 2.0 istemci kimlikleri ve sonuncusu OAuth2 hizmet hesapları içindir. Ortadaki seçeneği kullanıyoruz.
Kimlik bilgisi oluşturma
Kimlik Bilgileri sayfasında, üst kısımdaki + Kimlik Bilgileri Oluştur düğmesini tıklayın. Bu işlem, "OAuth istemci kimliği:" seçeneğini belirleyeceğiniz bir iletişim kutusu açar.
Sonraki ekranda 2 işlem yapabilirsiniz: Uygulamanızın yetkilendirme "kullanıcı rızası ekranını" yapılandırma ve uygulama türünü seçme:
Kullanıcı rızası ekranı ayarlamadıysanız konsolda uyarıyı görürsünüz ve şimdi ayarlamanız gerekir. (Kullanıcı rızası ekranınız zaten ayarlandıysa sonraki adımları atlayın.)
OAuth izin ekranı
"Kullanıcı rızası ekranını yapılandır"ı tıklayın. Burada "Harici" bir uygulama seçersiniz (veya Google Workspace müşterisiyseniz "Dahili"):
Bu alıştırma kapsamında, codelab örneğinizi yayınlamadığınız için hangisini seçtiğinizin önemli olmadığını unutmayın. Çoğu kişi daha karmaşık bir ekrana yönlendirilmek için "Harici"yi seçer ancak aslında yalnızca en üstteki "Uygulama adı" alanını doldurmanız gerekir:
Şu anda ihtiyacınız olan tek şey bir uygulama adı. Bu nedenle, yaptığınız codelab'i yansıtan bir ad seçin ve Kaydet'i tıklayın.
OAuth istemci kimliği oluşturma (kullanıcı hesabı yetkilendirme)
Şimdi OAuth2 istemci kimliği oluşturmak için Kimlik Bilgileri sekmesine geri dönün. Burada oluşturabileceğiniz çeşitli OAuth istemci kimliklerini görürsünüz:
Diğer kategorisinde bir komut satırı aracı geliştiriyoruz. Bu nedenle, bu seçeneği belirleyip Oluştur düğmesini tıklayın. Oluşturduğunuz uygulamayı yansıtan bir istemci kimliği adı seçin veya genellikle "Diğer istemci N" olan varsayılan adı kullanın.
Kimlik bilgilerinizi kaydetme
- Yeni kimlik bilgilerini içeren bir iletişim kutusu gösterilir. Kapatmak için Tamam'ı tıklayın.
- Kimlik Bilgileri sayfasına geri dönün, "OAuth2 İstemci Kimlikleri" bölümüne gidin ve yeni oluşturduğunuz istemci kimliğinizin en sağ alt kısmındaki indirme simgesini
tıklayın.
- Bu işlem,
client_secret-LONG-HASH-STRING.apps.googleusercontent.com.jsonadlı bir dosyayı kaydetmek için bir iletişim kutusu açar. Bu dosya, büyük olasılıkla İndirilenler klasörünüze kaydedilir.client_secret.jsongibi daha kolay bir adla kısaltmanızı (örnek uygulamada kullanılan ad) ve ardından bu codelab'de örnek uygulamayı oluşturacağınız dizine/klasöre kaydetmenizi öneririz.