Google, Siyah topluluklar için ırksal eşitliği geliştirmeye kararlıdır. Nasıl olduğunu gör.

Google API'lerine Erişmek için OAuth 2.0'ı Kullanma

Google API'leri, kimlik doğrulama ve yetkilendirme için OAuth 2.0 protokolünü kullanır. Google, web sunucusu, istemci tarafı, yüklü ve sınırlı girişli cihaz uygulamaları için olanlar gibi yaygın OAuth 2.0 senaryolarını destekler.

Başlamak için, Google API Console adresinden OAuth 2.0 istemci kimlik bilgilerini alın. Ardından, istemci uygulamanız Google Yetkilendirme Sunucusundan bir erişim belirteci ister, yanıttan bir belirteç çıkarır ve belirteci erişmek istediğiniz Google API'sine gönderir. Google ile OAuth 2.0 kullanmanın etkileşimli bir gösterimi için (kendi istemci kimlik bilgilerinizi kullanma seçeneği dahil), OAuth 2.0 Playground ile deneme yapın.

Bu sayfa, Google'ın desteklediği OAuth 2.0 yetkilendirme senaryolarına genel bir bakış sunar ve daha ayrıntılı içeriğe bağlantılar sağlar. Kimlik doğrulama için OAuth 2.0'ı kullanmayla ilgili ayrıntılar için bkz. OpenID Connect .

Basit adımlar

Tüm uygulamalar, OAuth 2.0 kullanarak bir Google API'sine erişirken temel bir kalıp izler. Yüksek düzeyde, beş adımı takip edersiniz:

1. Google API Console'den OAuth 2.0 kimlik bilgilerini alın.

Hem Google hem de uygulamanız tarafından bilinen bir müşteri kimliği ve müşteri sırrı gibi OAuth 2.0 kimlik bilgilerini almak için Google API Console'yi ziyaret edin. Değer kümesi, oluşturduğunuz uygulamanın türüne göre değişir. Örneğin, bir JavaScript uygulaması bir sır gerektirmez, ancak bir web sunucusu uygulaması ister.

2. Google Yetkilendirme Sunucusundan bir erişim belirteci edinin.

Uygulamanız bir Google API kullanarak özel verilere erişmeden önce, o API'ye erişim sağlayan bir erişim belirteci edinmelidir. Tek bir erişim belirteci, birden çok API'ye değişen derecelerde erişim verebilir. scope adı verilen değişken bir parametre, bir erişim belirtecinin izin verdiği kaynak ve işlemler kümesini denetler. Erişim belirteci isteği sırasında uygulamanız, scope parametresinde bir veya daha fazla değer gönderir.

Bu istekte bulunmanın birkaç yolu vardır ve bunlar oluşturduğunuz uygulamanın türüne göre değişir. Örneğin, bir JavaScript uygulaması, tarayıcısı olmayan bir cihaza yüklenen bir uygulama web hizmeti isteklerini kullanırken, Google'a yönlendirme yapan bir tarayıcı kullanarak bir erişim belirteci isteyebilir.

Bazı istekler, kullanıcının Google hesabıyla oturum açtığı bir kimlik doğrulama adımı gerektirir. Oturum açtıktan sonra, kullanıcıya uygulamanızın talep ettiği bir veya daha fazla izni vermek isteyip istemediği sorulur. Bu işleme kullanıcı onayı denir.

Kullanıcı en az bir izin verirse, Google Yetkilendirme Sunucusu, uygulamanıza bir erişim belirteci (veya uygulamanızın bir erişim belirteci almak için kullanabileceği bir yetkilendirme kodu) ve bu belirteç tarafından verilen erişim kapsamlarının bir listesini gönderir. Kullanıcı izin vermezse sunucu hata verir.

Kapsamları önceden değil, erişimin gerekli olduğu anda aşamalı olarak istemek genellikle en iyi uygulamadır. Örneğin, bir etkinliği takvime kaydetmeyi desteklemek isteyen bir uygulama, kullanıcı "Takvime Ekle" düğmesine basana kadar Google Takvim erişimi istememelidir; bkz. Artımlı yetkilendirme .

3. Kullanıcı tarafından verilen erişim kapsamlarını inceleyin.

Erişim belirteci yanıtında yer alan kapsamları, ilgili bir Google API'sine erişime bağlı olarak uygulamanızın özelliklerine ve işlevlerine erişmek için gereken kapsamlarla karşılaştırın. İlgili API'ye erişim olmadan çalışamayan uygulamanızın tüm özelliklerini devre dışı bırakın.

Kullanıcı, istenen tüm kapsamları vermiş olsa bile, isteğinize dahil edilen kapsam, yanıtınızın içerdiği kapsamla eşleşmeyebilir. Erişim için gereken kapsamlar için her Google API'sinin belgelerine bakın. Bir API, istekte izin verilen tüm değerler için aynı kapsam dizesini döndürerek, birden çok kapsam dizesi değerini tek bir erişim kapsamına eşleyebilir. Örnek: Bir uygulama, bir kullanıcıdan https://www.google.com/m8/feeds/ kapsamını yetkilendirmesini istediğinde, Google People API, https://www.googleapis.com/auth/contacts kapsamını döndürebilir; Google People API yöntemi people.updateContact , verilmiş bir https://www.googleapis.com/auth/contacts kapsamı gerektirir.

4. Erişim belirtecini bir API'ye gönderin.

Bir uygulama bir erişim belirteci aldıktan sonra, belirteci bir HTTP Yetkilendirme isteği başlığında bir Google API'sine gönderir. Belirteçleri URI sorgu dizesi parametreleri olarak göndermek mümkündür, ancak bunu önermiyoruz, çünkü URI parametreleri tamamen güvenli olmayan günlük dosyalarına girebilir. Ayrıca, gereksiz URI parametre adları oluşturmaktan kaçınmak için iyi bir REST uygulamasıdır. Sorgu dizesi desteğinin 1 Haziran 2021'de kullanımdan kaldırılacağını unutmayın.

Erişim belirteçleri, yalnızca belirteç isteği scope açıklanan işlemler ve kaynaklar kümesi için geçerlidir. Örneğin, Google Calendar API için bir erişim belirteci verilirse, Google Contacts API'ye erişim izni vermez. Ancak, benzer işlemler için bu erişim belirtecini Google Calendar API'ye birden çok kez gönderebilirsiniz.

5. Gerekirse erişim belirtecini yenileyin.

Erişim belirteçlerinin sınırlı ömürleri vardır. Uygulamanızın, tek bir erişim belirtecinin kullanım süresinin ötesinde bir Google API'sine erişmesi gerekiyorsa, bir yenileme belirteci alabilir. Yenileme belirteci, uygulamanızın yeni erişim belirteçleri almasına olanak tanır.

Senaryolar

Web sunucusu uygulamaları

Google OAuth 2.0 uç noktası, PHP, Java, Python, Ruby ve ASP.NET gibi dilleri ve çerçeveleri kullanan web sunucusu uygulamalarını destekler.

Yetkilendirme dizisi, uygulamanız bir tarayıcıyı bir Google URL'sine yönlendirdiğinde başlar; URL, talep edilen erişim türünü belirten sorgu parametrelerini içerir. Google, kullanıcı kimlik doğrulamasını, oturum seçimini ve kullanıcı onayını ele alır. Sonuç, uygulamanın bir erişim belirteci ve bir yenileme belirteci ile değiş tokuş edebileceği bir yetkilendirme kodudur.

Uygulama, yenileme belirtecini ileride kullanmak üzere saklamalı ve bir Google API'sine erişmek için erişim belirtecini kullanmalıdır. Erişim belirtecinin süresi dolduğunda, uygulama yeni bir tane almak için yenileme belirtecini kullanır.

Uygulamanız Google Yetkilendirme Sunucusuna bir belirteç isteği gönderir, bir yetkilendirme kodu alır, kodu bir belirteçle değiştirir ve belirteci bir Google API uç noktasını çağırmak için kullanır.

Ayrıntılar için bkz. Web Sunucusu Uygulamaları için OAuth 2.0'ı Kullanma .

Yüklü uygulamalar

Google OAuth 2.0 uç noktası, bilgisayarlar, mobil cihazlar ve tabletler gibi cihazlara yüklenen uygulamaları destekler. Google API Console aracılığıyla bir istemci kimliği oluşturduğunuzda , bunun Yüklü bir uygulama olduğunu belirtin, ardından uygulama türü olarak Android, Chrome uygulaması, iOS, Evrensel Windows Platformu (UWP) veya Masaüstü uygulamasını seçin.

İşlem, bir müşteri kimliği ve bazı durumlarda uygulamanızın kaynak koduna yerleştirdiğiniz bir müşteri sırrı ile sonuçlanır. (Bu bağlamda, istemci sırrı açıkça bir sır olarak ele alınmaz.)

Yetkilendirme dizisi, uygulamanız bir tarayıcıyı bir Google URL'sine yönlendirdiğinde başlar; URL, talep edilen erişim türünü belirten sorgu parametrelerini içerir. Google, kullanıcı kimlik doğrulamasını, oturum seçimini ve kullanıcı onayını ele alır. Sonuç, uygulamanın bir erişim belirteci ve bir yenileme belirteci ile değiş tokuş edebileceği bir yetkilendirme kodudur.

Uygulama, yenileme belirtecini ileride kullanmak üzere saklamalı ve bir Google API'sine erişmek için erişim belirtecini kullanmalıdır. Erişim belirtecinin süresi dolduğunda, uygulama yeni bir tane almak için yenileme belirtecini kullanır.

Uygulamanız Google Yetkilendirme Sunucusuna bir belirteç isteği gönderir, bir yetkilendirme kodu alır, kodu bir belirteçle değiştirir ve belirteci bir Google API uç noktasını çağırmak için kullanır.

Ayrıntılar için, bkz. Yüklü Uygulamalar için OAuth 2.0'ı Kullanma .

İstemci tarafı (JavaScript) uygulamaları

Google OAuth 2.0 uç noktası, bir tarayıcıda çalışan JavaScript uygulamalarını destekler.

Yetkilendirme dizisi, uygulamanız bir tarayıcıyı bir Google URL'sine yönlendirdiğinde başlar; URL, talep edilen erişim türünü belirten sorgu parametrelerini içerir. Google, kullanıcı kimlik doğrulamasını, oturum seçimini ve kullanıcı onayını ele alır.

Sonuç, müşterinin bir Google API isteğine eklemeden önce doğrulaması gereken bir erişim belirtecidir. Belirtecin süresi dolduğunda, uygulama işlemi tekrarlar.

JS uygulamanız Google Yetkilendirme Sunucusuna bir belirteç isteği gönderir, bir belirteç alır, belirteci doğrular ve bir Google API uç noktasını çağırmak için belirteci kullanır.

Ayrıntılar için, bkz . İstemci Tarafı Uygulamalar için OAuth 2.0'ı Kullanma .

Sınırlı girişli cihazlarda uygulamalar

Google OAuth 2.0 uç noktası, oyun konsolları, video kameralar ve yazıcılar gibi sınırlı girişli cihazlarda çalışan uygulamaları destekler.

Yetkilendirme dizisi, uygulamanın bir yetkilendirme kodu için bir Google URL'sine web hizmeti talebinde bulunmasıyla başlar. Yanıt, bir URL ve uygulamanın kullanıcıya gösterdiği bir kod dahil olmak üzere çeşitli parametreler içerir.

Kullanıcı cihazdan URL ve kodu alır, ardından daha zengin giriş özelliklerine sahip ayrı bir cihaza veya bilgisayara geçer. Kullanıcı bir tarayıcı başlatır, belirtilen URL'ye gider, oturum açar ve kodu girer.

Bu arada, uygulama belirli bir aralıkta bir Google URL'sini yoklar. Kullanıcı erişimi onayladıktan sonra, Google sunucusundan gelen yanıt, bir erişim jetonu ve yenileme jetonu içerir. Uygulama, yenileme belirtecini ileride kullanmak üzere saklamalı ve bir Google API'sine erişmek için erişim belirtecini kullanmalıdır. Erişim belirtecinin süresi dolduğunda, uygulama yeni bir tane almak için yenileme belirtecini kullanır.

Kullanıcı, tarayıcısı olan ayrı bir cihazda oturum açar

Ayrıntılar için bkz. Cihazlar için OAuth 2.0'ı Kullanma .

Hizmet hesapları

Prediction API ve Google Cloud Storage gibi Google API'leri, kullanıcı bilgilerine erişmeden uygulamanız adına hareket edebilir. Bu durumlarda uygulamanızın API'ye kendi kimliğini kanıtlaması gerekir, ancak kullanıcı onayı gerekmez. Benzer şekilde, kurumsal senaryolarda, uygulamanız bazı kaynaklara yetkilendirilmiş erişim talep edebilir.

Bu tür sunucular arası etkileşimler için, bireysel bir son kullanıcı yerine uygulamanıza ait bir hesap olan bir hizmet hesabına ihtiyacınız vardır. Uygulamanız, hizmet hesabı adına Google API'lerini çağırır ve kullanıcı onayı gerekmez. (Hizmet hesabı olmayan senaryolarda, uygulamanız son kullanıcılar adına Google API'lerini çağırır ve bazen kullanıcı onayı gerekir.)

Google API Console'den edindiğiniz bir hizmet hesabının kimlik bilgileri, benzersiz bir oluşturulmuş e-posta adresi, bir müşteri kimliği ve en az bir genel/özel anahtar çifti içerir. İmzalı bir JWT oluşturmak ve uygun biçimde bir erişim belirteci isteği oluşturmak için müşteri kimliğini ve bir özel anahtarı kullanırsınız. Uygulamanız daha sonra belirteç isteğini bir erişim belirteci döndüren Google OAuth 2.0 Yetkilendirme Sunucusuna gönderir. Uygulama, bir Google API'sine erişmek için belirteci kullanır. Belirtecin süresi dolduğunda, uygulama işlemi tekrarlar.

Sunucu uygulamanız, Google Yetkilendirme Sunucusundan bir belirteç istemek için bir JWT kullanır, ardından bir Google API uç noktasını çağırmak için belirteci kullanır. Son kullanıcı dahil değildir.

Ayrıntılar için hizmet hesabı belgelerine bakın .

jeton boyutu

Jetonların boyutu aşağıdaki sınırlara kadar değişebilir:

  • Yetkilendirme kodları: 256 bayt
  • Erişim belirteçleri: 2048 bayt
  • Yenileme belirteçleri: 512 bayt

Google Cloud'un Security Token Service API'si tarafından döndürülen erişim jetonları, Google API OAuth 2.0 erişim jetonlarına benzer şekilde yapılandırılmıştır ancak jeton boyutu sınırları farklıdır. Ayrıntılar için API belgelerine bakın .

Google, bu sınırlar dahilinde jeton boyutunu değiştirme hakkını saklı tutar ve uygulamanızın buna göre değişken jeton boyutlarını desteklemesi gerekir.

Jeton süresinin dolmasını yenile

Verilen bir yenileme belirtecinin artık çalışmama olasılığını tahmin etmek için kodunuzu yazmalısınız. Bir yenileme belirteci aşağıdaki nedenlerden biri nedeniyle çalışmayı durdurabilir:

  • Kullanıcı, uygulamanızın erişimini iptal etti .
  • Yenileme belirteci altı aydır kullanılmadı.
  • Kullanıcı parolaları değiştirdi ve yenileme belirteci Gmail kapsamlarını içeriyor.
  • Kullanıcı hesabı, verilen (canlı) yenileme jetonlarının maksimum sayısını aştı.
  • Kullanıcı, geçerli oturum denetimi politikalarına sahip bir Google Cloud Platform kuruluşuna aittir.

Harici bir kullanıcı türü için yapılandırılmış OAuth izin ekranına ve "Test Ediliyor" yayınlama durumuna sahip bir Google Cloud Platform projesine 7 gün içinde sona erecek bir yenileme jetonu verilir.

Şu anda OAuth 2.0 istemci kimliği başına Google Hesabı başına 50 yenileme jetonu sınırı vardır. Sınıra ulaşılırsa, yeni bir yenileme belirteci oluşturmak, en eski yenileme belirtecini uyarı olmaksızın otomatik olarak geçersiz kılar. Bu sınır, hizmet hesapları için geçerli değildir.

Ayrıca, bir kullanıcı hesabının veya hizmet hesabının tüm istemcilerde sahip olabileceği toplam yenileme belirteçlerinin sayısında daha büyük bir sınır vardır. Çoğu normal kullanıcı bu sınırı aşmaz, ancak bir uygulamayı test etmek için kullanılan bir geliştirici hesabı olabilir.

Birden çok programı, makineyi veya cihazı yetkilendirmeniz gerekiyorsa, geçici çözümlerden biri, Google Hesabı başına yetkilendirdiğiniz istemci sayısını 15 veya 20 ile sınırlamaktır. Bir Google Workspace yöneticisiyseniz , yönetici ayrıcalıklarına sahip ek kullanıcılar oluşturabilir ve bazı istemcileri yetkilendirmek için bunları kullanın.

Google Cloud Platform (GCP) kuruluşları için oturum kontrol politikalarıyla ilgilenmek

GCP kuruluşlarının yöneticileri, Google Cloud oturum kontrolü özelliğini kullanarak GCP kaynaklarına erişirken kullanıcıların sık sık yeniden kimlik doğrulamasını gerektirebilir. Bu politika, Google Cloud Console'a, Google Cloud SDK'ya (gcloud CLI olarak da bilinir) ve Bulut Platformu kapsamı gerektiren herhangi bir üçüncü taraf OAuth uygulamasına erişimi etkiler. Bir kullanıcının bir oturum kontrol politikası varsa, oturum süresinin bitiminde, API çağrılarınız, yenileme belirteci iptal edildiğinde ne olacağına benzer şekilde hata verir. Oturum süreleri çok sınırlı olabileceğinden (1 saat ila 24 saat arasında), bu senaryo bir auth oturumu yeniden başlatılarak incelikle ele alınmalıdır.

Aynı şekilde, sunucudan sunucuya dağıtım için kullanıcı kimlik bilgilerini kullanmamalı veya kullanımını teşvik etmemelisiniz. Kullanıcı kimlik bilgileri, uzun süreli işler veya işlemler için bir sunucuya dağıtılırsa ve bir müşteri bu tür kullanıcılara oturum kontrol ilkeleri uygularsa, oturum süresi sona erdiğinde kullanıcıyı yeniden doğrulamanın bir yolu olmayacağından sunucu uygulaması başarısız olur.

Müşterilerinizin bu özelliği dağıtmasına nasıl yardımcı olabileceğiniz hakkında daha fazla bilgi için bu yönetici odaklı yardım makalesine bakın.

İstemci kitaplıkları

Aşağıdaki istemci kitaplıkları, OAuth 2.0'ın uygulanmasını kolaylaştıran popüler çerçevelerle entegre olur. Zamanla kütüphanelere daha fazla özellik eklenecektir.