Bu codelab hakkında
1. Google Workspace API'lerini kullanma
Bu codelab'de Google Workspace (eski adıyla G Suite) HTTP tabanlı RESTful API'lerini kullanmayı öğreneceksiniz. Örnek, kısa ve kullanılabilir olması için Python'da yapılacaktır ancak isterseniz geliştirme dilinizi kullanmayı da seçebilirsiniz. Proje oluşturmak/yönetmek için geliştirici konsolunu kullanma, yetkilendirme kimlik bilgilerini alma ve API istemci kitaplıklarını yükleme gibi tanıtım amaçlı konularla karşılaşacaksınız. resmi işlemler tamamlandıktan sonra, ilk 100 dosyayı ve klasörlerini Google Drive'ınızın API'sinde bulabilirsiniz.
Neler öğreneceksiniz?
- Google/Cloud Developers Console'u kullanarak proje oluşturma
- & uygulamanızda OAuth2 uygulama kimlik bilgilerini kullanın
- Google API'leri İstemci Kitaplıklarını kullanma hakkında bilgi edinin
- Google ve Google Workspace API'leri
- Google Drive API ile dosya ve klasör bilgilerini alma
Gerekenler
- İnternete ve web tarayıcısına erişim
- Google Hesabı (Google Workspace hesapları için yönetici onayı gerekebilir)
- Linux ve benzeri POSIX uyumlu sistemlere aşinalık Mac OS X
- Kod düzenleyici veya kabuk komutlarıyla kaynak dosyalar oluşturma özelliği.
- Temel Python becerileri (2 veya 3) ancak desteklenen herhangi bir dili de kullanabilirsiniz
- Google Drive'ınızdaki bazı dosyalar ve/veya klasörler
2. Anket
Bu codelab eğiticisini nasıl kullanacaksınız?
Google Workspace geliştirici araçları ve API'ler mi?
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şturma
- Uygulamanız için gerekli kimlik bilgilerini edinin
- Bu kimlik bilgilerini kullanarak Google Drive API'ye erişme
Python kullanmamayı tercih ederseniz codelab'i en sevdiğiniz geliştirme aracında uygulayabilir (desteklenen dillerin istemci kitaplıklarına buradan ulaşabilirsiniz) ve Python örneklerine (yürütülebilir) sözde kod olarak atıfta bulunabilirsiniz.
4. Python ortamını onaylayın
Bu codelab'de, Python dilini kullanmanız gerekir (Google API'leri istemci kitaplıkları, birçok dil tarafından desteklenmektedir. Bu nedenle, en sevdiğiniz geliştirme aracında eşdeğer bir uygulama geliştirebilir ve gerçek kod olarak Python'u kullanabilirsiniz). Bu codelab'de özellikle Python 2 ve 3 desteklenir ancak en kısa sürede 3.x'e geçmenizi öneririz.
Cloud Shell, kullanıcılara doğrudan Cloud Console üzerinden sunulan bir kolaylık sağlar ve yerel geliştirme ortamı gerektirmez. Bu nedenle, bu eğitim tamamen bulutta bir web tarayıcısıyla yapılabilir. Cloud Shell, özellikle GCP ürünleri ve API'ler. Daha açık belirtmek gerekirse bu codelab'de Cloud Shell'e Python'un her iki 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 kullanmanızı önerdiğimiz üst düzey bir etkileşimli Python çevirmenidir. Bu durumda IPython, Jupyter Notebooks'un yanı sıra Google Research tarafından barındırılan Colab, Jupyter Notebooks için de varsayılan çevirmendir.
IPython, öncelikle Python 3 çevirmenini tercih eder ancak 3.x mevcut değilse Python 2'ye geri döner. IPython'a Cloud Shell'den erişilebilir, ancak yerel bir geliştirme ortamında da yüklenebilir. ^D (Ctrl-d) tuşlarına basarak çıkın ve çıkış teklifini kabul edin. ipython
başlangıcının örneği ş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ısının (Cloud Shell veya yerel geliştirme ortamınız) kullanılması mükemmel bir şekilde kabul edilebilir (aynı zamanda ^D ile çıkış yapın):
$ 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. >>>
Codelab'de ayrıca pip
yükleme aracına (Python paket yöneticisi ve bağımlılık çözümleyici) sahip olduğunuz varsayılır. 2.7.9 ve sonraki sürümler ile paket halinde gelir. Eski bir Python sürümünüz varsa yükleme talimatları için bu rehberi inceleyin. İzinlerinize bağlı olarak sudo
veya süper kullanıcı erişimine sahip olmanız gerekebilir ancak genellikle durum böyle değildir. Belirli Python sürümlerinde pip
yürütmesi için açıkça pip2
veya pip3
kullanabilirsiniz.
Codelab'in geri kalanında, Python 3 kullandığınız varsayılır. 3.x'ten önemli ölçüde farklıysa Python 2 için özel talimatlar sağlanır.
*Sanal ortamlar oluşturun ve kullanın
Bu bölüm isteğe bağlıdır ve yalnızca bu codelab için sanal ortam kullanması gereken kullanıcılar için gereklidir (yukarıdaki uyarı kenar çubuğuna göre). Bilgisayarınızda yalnızca Python 3 varsa my_env
adlı bir virtualenv oluşturmak için şu komutu vermeniz yeterlidir (isterseniz başka bir ad seçebilirsiniz):
virtualenv my_env
Ancak, hem Python 2 hem de 3'ü bilgisayarınıza yüklemek için, -p flag
ile aşağıdaki şekilde yapabileceğiniz bir Python 3 virtualenv yüklemenizi öneririz:
virtualenv -p python3 my_env
"Etkinleştirerek" yeni oluşturulan virtualenv'nizi girin bu şekildedir:
source my_env/bin/activate
Kabuk isteminizin önüne ortamınızın adını (ör.
(my_env) $
Artık gerekli tüm paketleri pip install
veya bu belge içinde kod yürütebiliyor olmanız gerekir. vs. Bir başka avantaj da, işinizi tamamen bozarsanız, Python kurulumunuzun bozuk olduğu bir durumla karşılaşırsanız sisteminizin geri kalanını etkilemeden bu ortamı baştan sona karmaşaya sokmanızdır.
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 olabilir veya hiçbir şey yapmanız gerekmeyebilir.
Daha önce, kolaylık olması için Cloud Shell'i kullanmanızı önermiştik. Eğitimin tamamını buluttaki bir web tarayıcısından tamamlayabilirsiniz. Cloud Shell'i kullanmanın diğer bir nedeni de birçok popüler geliştirme aracının ve gerekli kitaplığın önceden önceden yüklü olmasıdır.
*İstemci kitaplıklarını yükleme
(isteğe bağlı) Cloud Shell'i veya istemci kitaplıklarını önceden yüklediğiniz bir yerel ortamı kullanıyorsanız bu adımı atlanabilir. Bunu yalnızca yerel olarak geliştirme yapıyorsanız ve uygulama yüklemediyseniz (veya yüklemediğinizden emin değilseniz) yapmanız gerekir. En kolay yol, yüklemeyi yapmak için pip
(veya pip3
) kullanmaktır (gerekirse pip
öğesinin kendisini güncellemek de dahil):
pip install -U pip google-api-python-client oauth2client
Yüklemeyi onayla
Bu komut, istemci kitaplığının yanı sıra bağımlı olduğu paketleri yükler. İster Cloud Shell'i ister kendi ortamınızı kullanın, gerekli paketleri içe aktararak istemci kitaplığının yüklü olduğunu doğrulayın ve içe aktarma hatası (veya çıkış) olmadığından emin olun:
python3 -c "import googleapiclient, httplib2, oauth2client"
Bunun yerine Python 2 kullanıyorsanız (Cloud Shell'den) bu desteğin sonlandırıldığını belirten 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. *******************************************************************************
Bu içe aktarma "test"i çalıştırdıktan sonra komutunu başarıyla kullandığınızdan (hata/çıktı olmadan) Google API'leriyle konuşmaya hazırsınız.
Özet
Bu kod laboratuvarı giriş niteliğinde olduğundan, Google ve Google Workspace API'lerini kullanmaya yeni başladığınız varsayılır. Proje oluşturma ve kullanıcı yetkilendirmesi "OAuth istemci kimlikleri" oluşturma konusunda deneyiminiz varsa Öyleyse mevcut bir proje oluşturun veya mevcut bir projeyi yeniden kullanın, mevcut bir OAuth istemci kimliği oluşturun ya da mevcut bir OAuth istemci kimliğini yeniden kullanın ve sonraki iki modülü atlayıp doğrudan "Drive dosyalarınızı görüntüleme ve klasör uygulaması" İsterseniz bu adımları daha az rehberlikle incelemek için "Gelişmiş geliştirici konsolu kullanımı" bölümüne geçebilirsiniz.
6. Cloud Console'da proje belirtin
Google API'lerini kullanan bir uygulama için proje gerekir. Bu çözümler Google Cloud Developers Console'da veya kısaca "devconsole" ile yönetilir. Bu codelab'de yalnızca Google Drive API'yi kullanacağız. Bu nedenle aşağıdaki sihirli bağlantıyı (1. Adım'ın altında) ele alacağız:
- Sizi geliştirici konsoluna yönlendirir
- Yeni bir proje oluşturma (veya mevcut bir projeyi seçme) konusunda size yol gösterir ve
- Drive API'yi otomatik olarak etkinleştirir.
Haydi başlayalım.
- console.developers.google.com/start/api?id=drive adresine gidip Google Hesabınıza giriş yapın.
- Henüz projeniz yoksa Google API'leri Hizmet Şartları'nı kabul etmek için aşağıdaki ekranı görürsünüz:
Şartları kabul ettiğinizde "Projem" adında yeni bir proje oluşturulur. oluşturulacak ve Drive API otomatik olarak etkinleştirilecek. 3. Bunun yerine daha önce oluşturduğunuz bir projeyi (örneğin önceki codelab'inizi mi?) oluşturduysanız şu ekranı görürsünüz:
Proje oluştur açılır menüsünü tıkladığınızda, mevcut bir projeyi seçin veya yeni bir proje oluşturun.
Seçiminizi yaptıktan sonra (yeni veya mevcut proje) Drive API, sizin için otomatik olarak etkinleştirilir. 4. Şu onay, Drive API'nin etkinleştirildiğini anlarsınız:
5. Sonraki adıma geçmek için Kimlik bilgilerine git'i tıklayın.
7. *API isteklerini yetkilendirme (kullanıcı yetkilendirme)
Kullanıcı hesabı yetkilendirme kimlik bilgilerini zaten oluşturduysanız ve süreç hakkında bilgi sahibiyseniz bu bölümü atlanabilir. Bu, tekniği farklı olan hizmet hesabı yetkilendirmesinden farklıdır, bu nedenle lütfen aşağıdan devam edin.
Yetkilendirmeye giriş (artı bazı kimlik doğrulama işlemleri)
API'lere istek gönderilebilmesi için uygulamanızın uygun yetkilendirmeye sahip olması gerekir. Kimlik doğrulama, benzer bir kelime olan giriş kimlik bilgilerini tanımlar. Giriş kimlik bilgilerinden yararlanarak Google Hesabınıza giriş yaparken siz de kendi kimliğinizi doğrularsınız. şifre. Kimlik doğrulamasından sonraki adım, Cloud Storage'daki blob dosyaları veya kullanıcının Google Drive'daki kişisel dosyaları gibi verilere erişim yetkisine sahip olup olmadığınızı veya daha doğrusu kodunuzun olup olmadığını belirlemektir.
Google API'leri çeşitli yetkilendirme türlerini destekler ancak bu codelab'deki örnek uygulama son kullanıcılara ait verilere eriştiğinden Google Workspace API kullanıcıları için en yaygın olanı kullanıcı yetkilendirmedir. Bu son kullanıcılar uygulamanıza, verilerine erişmek için izin vermelidir. Bu, kodunuzun kullanıcı hesabı OAuth2 kimlik bilgilerini alması gerektiği anlamına gelir.
Kullanıcı yetkilendirmesi için OAuth2 kimlik bilgilerini almak üzere API yöneticisine dönün ve "Kimlik bilgileri"ni seçin sekmesinden:
Bu sayfaya ulaştığınızda tüm kimlik bilgilerinizi üç ayrı bölümde görürsünüz:
İlki API anahtarları, ikinci OAuth 2.0 istemci kimlikleri ve son OAuth2 hizmet hesapları içindir. Ortadakini kullanıyoruz.
Kimlik bilgileri oluşturuluyor
Kimlik Bilgileri sayfasında, üst taraftaki + Kimlik Bilgisi Oluştur düğmesini tıklayın, ardından "OAuth istemci kimliği:" seçeneğini belirleyeceğiniz bir iletişim kutusu görüntülenir.
Sonraki ekranda 2 işleminiz var: Uygulamanızın yetkilendirme "izin ekranı"nı yapılandırma ve uygulama türünü seçerek:
İzin ekranı ayarlamadıysanız konsolda bu uyarıyı görürsünüz. Bu işlemi şimdi yapmanız gerekir. (İzin ekranınız zaten ayarlanmışsa bu sonraki adımları atlayın.)
OAuth izin ekranı
"Configure consent screen" (İzin ekranını yapılandır) seçeneğini tıklayın. Burada "Harici"yi uygulama (veya Google Workspace [eski adıyla "Google Workspace"] müşterisiyseniz "Dahili"):
Codelab örneğinizi yayınlamadığınızdan, bu alıştırmada hangisini seçtiğinizin önemli olmadığını unutmayın. Çoğu kullanıcı "Harici"yi seçer bir ekrana geçebileceğini unutmayın ancak burada yalnızca "Uygulama adı"nı alanına girin:
Şu an için tek ihtiyacınız uygulama adıdır. Bu nedenle, yaptığınız codelab'i yansıtan birini seçip Kaydet'i tıklayın.
OAuth istemci kimliği (kullanıcı hesabı kimlik doğrulaması) oluşturuluyor
Kimlik bilgileri sekmesine geri dönün ve bir OAuth2 istemci kimliği oluşturun. Burada, oluşturabileceğiniz çeşitli OAuth istemci kimlikleri gösterilir:
Diğer adlı bir komut satırı aracı geliştiriyoruz. Bu aracı seçip Oluştur düğmesini tıklayın. Oluşturduğunuz uygulamayı yansıtan bir istemci kimliği adı seçin veya varsayılan adı (genellikle "Diğer istemci N") alın.
Kimlik bilgileriniz kaydediliyor
- Yeni kimlik bilgilerinin yer aldığı bir iletişim kutusu görüntülenir; kapatmak için Tamam'ı tıklayın
- Kimlik Bilgileri sayfasında "OAuth2 İstemci Kimlikleri" bölümüne ilerleyin bölümünde, yeni oluşturulan istemci kimliğinizin en sağındaki indir simgesini
bulup tıklayın.
- Bu işlem, muhtemelen İndirilenler klasörünüze düşecek şekilde
client_secret-
LONG-HASH-STRING
.apps.googleusercontent.com.json
adlı bir dosyanın kaydedileceği bir iletişim kutusu açar. Daha kolay olacak şekilde kısaltarak adıclient_secret.json
(örnek uygulamada kullanılır) olacak şekilde kısaltıp bu codelab'de örnek uygulamayı oluşturacağınız dizine/klasöre kaydetmenizi öneririz.
Özet
Kimlik bilgileriniz elinizin altında olduğunda artık uygulamanızdan Drive API'ye erişmeye hazırsınız. OAuth istemci kimliğinin amacı, kullanıcılarınızın uygulamanıza, Google Drive'daki verilerine erişmesi için izin vermesidir.
NOT: "Sihirbaz"ı kullanmadan proje oluşturma, API'leri etkinleştirme ve kimlik bilgilerini manuel olarak alma hakkında daha fazla bilgi bu codelab sona erdikten sonra daha fazla araştırma yapmak üzere kullanıma sunulmaktadır.
8. Drive dosyalarınız ve klasör uygulaması
Yerel geliştirme ortamınızda veya 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şlevi sağlamak için Python içe aktarmaları
- Uygulama kimlik bilgilerini alma
- Dosyayı getir ve klasör adları ve Kullanıcının Google Drive'ındaki MIME türleri ve ekran
NOT: Bu codelab'in tamamlanmasından sonra daha ayrıntılı araştırmalar için, kodla ilgili daha ayrıntılı bilgi edinebilir ve satır satır açıklamaları inceleyebilirsiniz.
Uygulamayı çalıştırma
Bu dosyaya drive_list.py
gibi bir ad verin. Komut dosyasını ilk kez çalıştırdığınızda, komut dosyası kullanıcının Drive'daki (sizinki) dosyalarına erişme yetkisine sahip olmaz. Yürütme duraklatılmış durumdayken çı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çıldığında komut satırı komut dosyası duraklatılır ve OAuth2 izinleri iletişim kutusu gösterilir:
Bu, uygulama kullanıcıdan kodun istediği izinleri istediği yerdir (SCOPES
değişkeni aracılığıyla). Bu durumda, kullanıcının Google Drive'ındaki dosya meta verilerini görüntüleme özelliğidir. Evet, bu izin kapsamları kodunuzda URI olarak görünür ancak OAuth2 akış iletişim kutusunda yerel ayarınızda belirtilen dile çevrilir. Kullanıcı, istenen izinler için açık yetkilendirme vermelidir. Aksi takdirde "akışı çalıştır". bir kısmı istisna oluşturur ve komut dosyası devam etmez.
NOT: Bazı kullanıcıların birden fazla tarayıcısı vardır ve yetkilendirme isteği tercih edilmeyen bir tarayıcıda görüntüleniyor olabilir. Bu durumda, kullanmak istemediğiniz tarayıcı penceresinden URL'nin tamamını kopyalayıp kullanmak istediğiniz tarayıcının adres çubuğuna yapıştırmanız yeterlidir.
Cloud Shell'den
Dikkat etmediyseniz ve programı Cloud Shell'de çalıştırdıysanız hiçbir tarayıcı penceresi açılmaz ve takılıp kalırsınız. Alttaki teşhis mesajının size yönelik olduğunu fark edeceksiniz. Şu 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 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ı izleyerek ve söz konusu URL'ye sahip farklı bir tarayıcı sekmesine giderek, yukarıda yerel geliştirme ortamları için açıklananla neredeyse aynı deneyimi yaşarsınız. Aradaki temel fark sonda, Cloud Shell'e gireceğiniz doğrulama kodunu içeren bir ekran daha göreceksiniz:
Bu kodu kesip terminal penceresine yapıştırın.
Özet
Kullanıcı izin ver seçeneğini tıkladıktan ve/veya doğrulama kodu isteme yapıştırıldıktan sonra uygulama çalışmaya devam eder (çalışmaya devam eder). Bu nedenle, Drive dosyalarını/klasörlerini ve bunların MIME türlerini içeren çıkışlar görebilirsiniz. Test hesaplarımızdan birinden örnek:
$ 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 . . .
Art arda yapılan yürütmelerde artık sizden yetkilendirme istenmediğini (yetkilendirme kitaplıkları tarafından önbelleğe alındığı için) ve doğrudan çıkışa gittiğinizi fark edeceksiniz. Belgelerinizi bir terminalde ilk kez görmek heyecan verici değil mi? Biz öyle düşünüyoruz!
9. Sonuç
Artık Drive API 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. Bu hedefi tamamladınız, tebrikler!
Bu codelab'de yer alan koda, github.com/googlecodelabs/gsuite-apis-intro adresindeki GitHub deposunda da erişebilirsiniz. (Bu codelab'i depoyla senkronize etmeyi amaçlıyoruz.) Devam etmeye hazır mısınız? Bu codelab'de ele alınan materyalleri daha ayrıntılı olarak incelemenize veya zihninizi çalıştırıp Google teknolojilerine programatik olarak erişmenin diğer yollarını keşfetmenize yardımcı olacak çeşitli kaynakları aşağıda bulabilirsiniz.
Daha önce de belirttiğimiz gibi, düzenli bir Python geliştiricisi değilseniz sizi 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
Artık Drive API'yle ilgili tecrübeniz olduğuna göre, becerilerinizi daha da geliştirmek için aşağıdaki önerilen alıştırmalardan yararlanabilirsiniz:
- ZIP dosyaları: Birden fazla ZIP arşivini Drive'a yedekleyen bir uygulama yazın. Bu dosyalar anında açılır, böylece her ZIP dosya adı bu dosyaların bulunduğu klasörün adıdır. EKSTRA KREDİ: Diğer klasörlere yerleştirilmiş Drive klasörlerinin bulunduğu diğer ZIP dosyalarında yinelenen ZIP arşivleri desteği. İzin verirseniz bu Node.js örnek uygulamasını inceleyin.
- Fotoğraf albümleri: Google Drive'a birden fazla resim yükleyen, bunları zaman damgası ve/veya diğer klasörlere göre ayrı klasörlerde düzenleyen bir fotoğraf albümü oluşturma aracının başlangıcını yazın coğrafi konum. EKSTRA KREDİ: Açık kaynak bir resim düzenleme kitaplığı bulun ve yaşamış olabileceğiniz etkinlikleri (seyahat, akşam yemeği vb.) temsil edecek şekilde her klasördeki tüm fotoğrafları birleştirin.
- GCP'yi keşfedin: Google Workspace ile Google Cloud Platform'u (GCP) birbirine bağlayan bir uygulama yazın. Resim dosyalarını Google Drive'dan Google Cloud Storage'a (GCS) yedekleyen bir araç ve diğer bir "bulutta dosya depolama" yazma çözümüne geçelim. İnanması güç olsa da, GCS'yi kullanmak, gelişmiş istemci kitaplıkları nedeniyle Drive'dan daha kolay olacak.
- Analiz ve kayıt: Yedeklenen her görüntüyü Google Cloud Vision API'ye ileterek ve en iyi (3, 5, 10) "etiketleri" alarak çözümünüzün kapsamını 3. sıraya taşıyın API'nin görüntülerde gördükleriyle ilgili bilgi verir. Her resim için, Cloud Vision'dan analizin yanı sıra resmin GCS'de yedeklenen konumunu içeren bir Google E-Tablosu'na satır yazın. Uygulamadan vazgeçerseniz bu Python codelab'ine göz atın.
10. Ek Kaynaklar
Belgeler
- Google Drive API dokümanları (REST API ve Android yerel SDK'sı/API'si)
- Diğer Google Workspace API'leri dokümanları
- Diğer Google API'leri dokümanları
- Google API'leri istemci kitaplıkları
- OAuth2 belgeleri
Benzer ve genel amaçlı videolar
- Yeni Google API projeleri oluşturma ( blog yayını ve video)
- Python yetkilendirme ortak metin kodu incelemesi ( video)
- Google Drive'daki dosyalarınızı listeleme ( video, blog yayını)
- Google Drive API video kitaplığı
- Launchpad Online video serisi (önceki...)
- Google Workspace Geliştirici Şovu video serisi
Haberler ve güncellemeleri
- 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ı (E-Tablolar API)
- [REST API'ler] GitHub lisansı BigQuery analiz aracı için özel slayt oluşturma aracı (Slaytlar+BigQuery API'leri)
Gelişmiş
- [REST API'ler] Bulutta resim işleme iş akışı (Drive, Cloud Storage, Cloud Vision, E-Tablolar API'leri)
Referans uygulamalar
- Markdown-Google Slaytlar dönüştürücü (Slaytlar REST API)
11. *Uygulamayla ilgili ayrıntılı açıklama
İsteğe bağlı bu bölüm, oluşmuş olabilecek boşlukları doldurmak veya daha fazla araştırma yapmak amacıyla oturum sonlandırıldıktan sonra bireysel çalışma olarak kullanılacaktır.
Kitaplık işlevi sağlamak 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
import
ifadesi, bu kodun Python 2'de çalışmasını sağlar. Yalnızca Python 3 kullanıyorsanız kod tamamen kaldırılabilir. - Python stil yönergelerinden biri, standart kitaplık ve 3. taraf modül içe aktarma işlemlerini ayırmaktır. Boş satırın amacı budur.
- Sonraki üç içe aktarma işlemi, gerekli sınıfları fonksiyonlarını değiştirmektir... Bu uygulamayı yazmak için bunların hepsi gereklidir. Kısaca özetlemek gerekirse şunları yapar:
googleapiclient
, Google API'lerine bağlanmaya odaklanırhttplib2
, uygulamanın kullanması için bir HTTP istemcisi sağlaroauth2client
, OAuth2 kimlik bilgilerini yönetmemize yardımcı olur
Uygulama kimlik bilgilerini yetkilendirme ve alma
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()))
SCOPES
uygulaması, bir uygulamanın, uygulamayı çalıştıran kullanıcıdan isteyeceği izinlerdir. Uygulamalar, kullanıcı verilerinin güvenliğini sağlamak için izin almadan çalışamaz- En iyi uygulamalardan biri, uygulamanızın çalışması için gereken en kısıtlayıcı izinleri kullanmaktır. Neden?
- Bir uygulamayı yüklerken veya çalıştırırken çok sayıda izin istemesi rahatsız edici değil mi? Bil bakalım ne oldu? Şu anda kullanıcılarınıza tüm bu izinleri istiyor ve bunun için paranın diğer tarafındasınız. Daha az erişim izni istediğiniz için daha kısıtlayıcı kapsamlar kullanmanız, kullanıcıların uygulamanızı yükleme konusunda daha iyi hissetmesini sağlar.
- Tüm kapsamların çoğu uzun URL'ler gibi görünür ve Drive meta veri kapsamı da bu kapsamdadır.
SCOPES = 'https://www.googleapis.com/auth/drive.readonly.metadata'
- Uygulamaların Google sunucularıyla iletişim kurabilmesi için bir jeton gereklidir. Google'dan gelen geçerli jetonlar, jeton depolama alanı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 bilgileri olup olmadığını kontrol eder (Koşullu
if
beyanına bakın).
creds = store.get()
if not creds or creds.invalid:
- Kimlik bilginiz yoksa veya süresi dolmuşsa OAuth istemci kimliğinizden [
oauth2client.client.flow_from_clientsecrets()
aracılığıyla] yeni bir yetkilendirme akışı oluşturulmalıdır.client_id.json
indirdiğiniz dosyadaki gizli anahtar].
if not creds or creds.invalid:
flow = client.flow_from_clientsecrets('client_id.json', SCOPES)
- Uygulamanız bir akışa sahip olduktan sonra, yukarıda açıklanan ve gösterilen [
oauth2client.tools.run_flow()
aracılığıyla] kullanıcıya OAuth2 izinleri ekranını sunmak için uygulamanızın yürütülmesi gerekir.
creds = tools.run_flow(flow, store)
- İzin ver'i tıklayan kullanıcılar, uygulamanızın kendi Google Drive dosyası meta verilerine erişmesine izin verir ve Google sunucuları API'ye erişmek için jetonları geri gönderir. Bunlar
creds
olarak döndürülür vestorage.json
dosyasında ö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ı yapıldığında, kullandığınız API için bir hizmet uç noktası oluşturulur. build()
özelliğini kullanmak için API adını ('drive'
) ve istenen sürüm (şu anda'v3'
).- Son parametre, şifrelenmiş API çağrıları için kullanılacak bir HTTP istemcisidir.
DRIVE = discovery.build('drive', 'v3', http=creds.authorize(Http()))
Getir ve ilk 100 Drive dosyasını/klasörü görüntüleme ve MIMEtypes)
files = DRIVE.files().list().execute().get('files', [])
for f in files:
print(f['name'], f['mimeType'])
- Sonraki kod satırı, isteği oluşturmak için Drive API'ye yönelik
files()
koleksiyonundalist()
yöntemini kullanır. Bu yöntem deexecute()
ile hemen çağrılır. Bir Pythondict
döndürülür. Bu örnekte, 100 dosyasını almak için'files'
anahtarını isteriz. Kullanıcının Google Drive'ındaki klasör adları (veya daha az dosyanız varsa daha az). - Neden 100? Bu,
DRIVE.files().list()
tarafından belirlenen varsayılan değerdir. Bu sayıyı (örneğin, yalnızca 10 dosya veya 1.000 dosya) değiştirmek isterseniz isteğinizepageSize
parametresini ekleyin:DRIVE.files().list(pageSize=10)
. Diğer seçenekler için belgelere göz atın. - Komut dosyasının son kısmı her dosya döngüsünde bir döngü oluşturur ve dosyanın adını ve daha iyi olur.
Google REST API kullanan ilk uygulamanızı yazmış oldunuz. Tebrikler! Bu komut dosyası, içe aktarma işlemleri ve yetkilendirme kodunun yanı sıra yalnızca birkaç satır koddan oluşur (yukarıda gördüğünüz gibi). Ç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. Aşağıda, aynı HTTP istemcisini yeniden kullanan ve üç Google API'sine (evet, 3 farklı SCOPES
ile) hizmet uç noktaları oluşturan bir uygulamaya ait Python kod snippet'ini görebilirsiniz:
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 verilerini temel alarak birden fazla slayt kümesi (Slaytlar API) oluşturan ve oluşturulan her sunu için kopyalanan (Drive API) bir slayt şablonu kullanan bir uygulamanın parçası olabileceğini düşünüyoruz. Henüz böyle bir uygulama olmasa da Google Workspace ekibinin yapı taşları olarak oluşturduğu mevcut iki örneği kullanarak benzer bir uygulama geliştirebilmeniz gerekir:
- Metni ve Slaytlar'daki resimler ( blog yayını ve video): Drive API'yi kullanarak bir slayt şablonu sunumunu kopyalar, ardından metni değiştirmek için Slaytlar API'sini kullanır ve resim yer tutucuları
- E-tablo verilerinden slayt oluşturma ( blog yayını ve video): Bir e-tablodan (E-Tablolar API) verileri okur ve bu verilere dayanarak slaytlar (Slaytlar API) oluşturur
Sizin göreviniz: Bu uygulamayı geliştirmek!
12. *Gelişmiş geliştirici konsolu kullanımı
Bu isteğe bağlı bölümde, codelab'de yukarıda anlatıldığı gibi sihirbazı kullanmadan geliştirici konsolunda projeleri nasıl oluşturacağınız, API'leri nasıl etkinleştireceğiniz ve kimlik bilgilerini nasıl edineceğiniz açıklanmaktadır. Bunu manuel olarak yapabilecek veya nasıl yapılacağını öğrenmek isteyen orta düzey kullanıcılar içindir.
Cloud Console'da projeyi belirtme
Google API'lerini kullanarak her uygulama yazdığınızda bir projenizin olması gerekir. Mevcut bir projeyi yeniden kullanabilir veya yeni bir proje oluşturabilirsiniz. Bu işlem Cloud Console'da gerçekleşir. Bazı codelab'ler, birçok gerekli adımı atlayarak hızlı bir şekilde çalışmanızı sağlayan sihirli bir bağlantı (ör. kurulum sihirbazı) sunar. Ancak hepsinde böyle olmadığı için bu bilgilerin amacı, projelerin nasıl oluşturulacağına ilişkin genel talimatlar vermektir.
Google kimlik bilgilerinizle giriş yaptığınız ve konsolun üst kısmında proje açılır menüsünü 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, yani Developers Console'dan alındığını unutmayın (sol gezinme bölmesindeki "API yöneticisi"ni tıklayarak veya doğrudan tarayıcınızı console.developers.google.com adresine yönlendirerek kolayca erişilebilir).
- Henüz projeniz yoksa aşağıdaki sayfaya yönlendirilirsiniz:
- Kontrol paneli sayfası:
- Kitaplık sayfası:
- ya da tamamen boş bir sayfa görüyorsanız:
Bu üçüncü durumla karşılaşırsanız Kitaplık sayfasına gitmek için tarayıcıyı yenileyin.
- Kontrol Paneli veya Kitaplık sayfalarında, sayfanın üst kısmındaki proje seçiciyi tıklayın:
- Ardından, seçici iletişim kutusu görüntülenir. "+" işaretini tıklayın. tıklayın:
- "+" işaretini tıkladığınızda bir Yeni Proje sayfası görüntülenir. 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:
Bunu yaptıktan sonra, gelecekteki projeler oluşturulurken e-posta talebi ve Hizmet Şartları ile ilgili sorular kaybolur:
5. Daha önce en az bir proje oluşturduysanız giriş yaptıktan sonra, üzerinde çalıştığınız son projenin kontrol paneline yönlendirilirsiniz. Bu sayfada Select a project'i (Proje seç) yaptığınız gibi yeni bir proje oluşturun > +'ya dokunun. 6. Yeni projeniz oluşturulduktan sonra Kontrol paneli sayfasına dönersiniz:
Projenizi başarıyla oluşturdunuz ve projeniz için kullanmak istediğiniz API'leri seçerek devam etmeye hazırsınız.
Google API'lerini etkinleştirin
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 kullanıyor olabilirsiniz. Bu API'leri kullanmadan önce etkinleştirmek için benzer adımları uygulamanız gerekir.
Cloud Shell'den
Cloud Shell'de aşağıdaki komutu kullanarak API'yi etkinleştirebilirsiniz:
gcloud services enable vision.googleapis.com
Cloud Console'dan
API Yöneticisi'nden Vision API'yi de etkinleştirebilirsiniz. Cloud Console'da API Yöneticisi'ne gidin ve "Kitaplık"ı seçin.
Arama çubuğuna "Vizyon" yazmaya başlayın, ardından gösterildiğinde Vision API'yi seçin. Siz yazarken aşağıdaki gibi görünebilir:
Aşağıda gördüğünüz iletişim kutusunu görüntülemek için Cloud Vision API'yi seçin, ardından "Etkinleştir"i tıklayın düğme:
Maliyet
Birçok Google API'si ücretsiz olarak kullanılabilir ancak GCP'nin (ürünler ve API'ler) kullanımı ücretsiz değildir. Vision API'yi (yukarıda açıklandığı gibi) etkinleştirirken, etkin bir faturalandırma hesabı girmeniz istenebilir. Kullanıcı, etkinleştirmeden önce Vision API'nin fiyatlandırma bilgilerine başvurmalıdır. Belirli Google Cloud Platform (GCP) ürünlerinde "Daima Ücretsiz" katmanını kapsar. Codelab amaçları doğrultusunda, Vision API'ye yapılan her çağrı bu ücretsiz katmana dahil edilir. Toplam sınırları içinde kaldığınız sürece (her bir ay içinde) sizden herhangi bir ücret alınmaz.
Bazı Google API'leri, ör. Google Workspace'te kullanım aylık abonelik kapsamındadır. Ö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 farklı şekilde faturalandırılır. Bu nedenle, bu bilgiler için API'nizin belgelerine başvurduğunuzdan emin olun.
Özet
Bu codelab'de yalnızca Google Drive API'yi etkinleştirmeniz yeterlidir. Bu nedenle, yukarıdaki talimatları uygulayıp "Drive"ı arayın. Etkinleştirildikten sonra devam et.
API isteklerini yetkilendirme (kullanıcı yetkilendirme)
Yetkilendirmeye giriş (artı bazı kimlik doğrulama işlemleri)
API'lere istek gönderilebilmesi için uygulamanızın uygun yetkilendirmeye sahip olması gerekir. Kimlik doğrulama, benzer bir kelime olan giriş kimlik bilgilerini tanımlar. Giriş kimlik bilgilerinden yararlanarak Google Hesabınıza giriş yaparken siz de kendi kimliğinizi doğrularsınız. şifre. Kimlik doğrulamasından sonraki adım, Cloud Storage'daki blob dosyaları veya kullanıcının Google Drive'daki kişisel dosyaları gibi verilere erişim yetkisine sahip olup olmadığınızı veya daha doğrusu kodunuzun olup olmadığını belirlemektir.
Google API'leri çeşitli yetkilendirme türlerini destekler ancak bu codelab'deki örnek uygulama son kullanıcılara ait verilere eriştiğinden Google Workspace API kullanıcıları için en yaygın olanı kullanıcı yetkilendirmedir. Bu son kullanıcılar uygulamanıza, verilerine erişmek için izin vermelidir. Bu, kodunuzun kullanıcı hesabı OAuth2 kimlik bilgilerini alması gerektiği anlamına gelir.
Kullanıcı yetkilendirmesi için OAuth2 kimlik bilgilerini almak üzere API yöneticisine dönün ve "Kimlik bilgileri"ni seçin sekmesinden:
Bu sayfaya ulaştığınızda tüm kimlik bilgilerinizi üç ayrı bölümde görürsünüz:
İlki API anahtarları, ikinci OAuth 2.0 istemci kimlikleri ve son OAuth2 hizmet hesapları içindir. Ortadakini kullanıyoruz.
Kimlik bilgileri oluşturuluyor
Kimlik Bilgileri sayfasında, üst taraftaki + Kimlik Bilgisi Oluştur düğmesini tıklayın, ardından "OAuth istemci kimliği:" seçeneğini belirleyeceğiniz bir iletişim kutusu görüntülenir.
Sonraki ekranda 2 işleminiz var: Uygulamanızın yetkilendirme "izin ekranı"nı yapılandırma ve uygulama türünü seçerek:
İzin ekranı ayarlamadıysanız konsolda bu uyarıyı görürsünüz. Bu işlemi şimdi yapmanız gerekir. (İzin ekranınız zaten ayarlanmışsa bu sonraki adımları atlayın.)
OAuth izin ekranı
"Configure consent screen" (İzin ekranını yapılandır) seçeneğini tıklayın. Burada "Harici"yi uygulama (veya Google Workspace müşterisiyseniz "Dahili"):
Codelab örneğinizi yayınlamadığınızdan, bu alıştırmada hangisini seçtiğinizin önemli olmadığını unutmayın. Çoğu kullanıcı "Harici"yi seçer bir ekrana geçebileceğini unutmayın ancak burada yalnızca "Uygulama adı"nı alanına girin:
Şu an için tek ihtiyacınız uygulama adıdır. Bu nedenle, yaptığınız codelab'i yansıtan birini seçip Kaydet'i tıklayın.
OAuth istemci kimliği (kullanıcı hesabı kimlik doğrulaması) oluşturuluyor
Kimlik bilgileri sekmesine geri dönün ve bir OAuth2 istemci kimliği oluşturun. Burada, oluşturabileceğiniz çeşitli OAuth istemci kimlikleri gösterilir:
Diğer adlı bir komut satırı aracı geliştiriyoruz. Bu aracı seçip Oluştur düğmesini tıklayın. Oluşturduğunuz uygulamayı yansıtan bir istemci kimliği adı seçin veya varsayılan adı (genellikle "Diğer istemci N") alın.
Kimlik bilgileriniz kaydediliyor
- Yeni kimlik bilgilerinin yer aldığı bir iletişim kutusu görüntülenir; kapatmak için Tamam'ı tıklayın
- Kimlik Bilgileri sayfasında "OAuth2 İstemci Kimlikleri" bölümüne ilerleyin bölümünde, yeni oluşturulan istemci kimliğinizin en sağındaki indir simgesini
bulup tıklayın.
- Bu işlem, muhtemelen İndirilenler klasörünüze düşecek şekilde
client_secret-
LONG-HASH-STRING
.apps.googleusercontent.com.json
adlı bir dosyanın kaydedileceği bir iletişim kutusu açar. Daha kolay olacak şekilde kısaltarak adıclient_secret.json
(örnek uygulamada kullanılır) olacak şekilde kısaltıp bu codelab'de örnek uygulamayı oluşturacağınız dizine/klasöre kaydetmenizi öneririz.