Google, Siyah topluluklar için ırksal eşitliği geliştirmeye kararlıdır. Nasıl olduğunu gör.
Bu sayfa, Cloud Translation API ile çevrilmiştir.
Switch to English

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ı gibi yaygın OAuth 2.0 senaryolarını destekler.

Başlamak için Google API Console'den OAuth 2.0 istemci kimlik bilgilerini alın. Ardından, istemci uygulamanız Google Yetkilendirme Sunucusundan bir erişim jetonu ister, yanıttan bir jeton çıkarır ve jetonu erişmek istediğiniz Google API’ya 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 deney 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

OAuth 2.0 kullanarak bir Google API'ye erişirken tüm uygulamalar temel bir modeli 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 istemci kimliği ve istemci sırrı gibi OAuth 2.0 kimlik bilgilerini almak için Google API Console adresini ziyaret edin. Değerler kümesi, oluşturduğunuz uygulama türüne göre değişir. Örneğin, bir JavaScript uygulaması bir sır gerektirmez, ancak bir web sunucusu uygulaması gerektirir.

2. Google Yetkilendirme Sunucusundan bir erişim jetonu alın.

Uygulamanızın bir Google API kullanarak özel verilere erişebilmesi için, o API'ye erişim izni veren bir erişim jetonu alması gerekir. Tek bir erişim belirteci, birden çok API'ye değişen derecelerde erişim sağlayabilir. scope adı verilen bir değişken parametre, bir erişim belirtecinin izin verdiği kaynakları ve işlemleri kontrol eder. 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şiklik gösterir. Örneğin, bir JavaScript uygulaması Google'a bir tarayıcı yeniden yönlendirmesi kullanarak bir erişim belirteci talep edebilirken, tarayıcısı olmayan bir cihaza yüklenmiş bir uygulama web hizmeti isteklerini kullanır.

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 istediği bir veya daha fazla izni vermeye istekli olup olmadığı sorulur. Bu işleme kullanıcı izni denir.

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

Kapsamları önceden değil, erişim gerektiğinde aşamalı olarak istemek genellikle en iyi uygulamadır. Örneğin, bir etkinliği bir takvime kaydetmeyi desteklemek isteyen bir uygulama, kullanıcı "Takvime Ekle" düğmesine basana kadar Google Takvim erişimi istememelidir; Artımlı yetkilendirmeye bakın.

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

Erişim belirteci yanıtına dahil edilen 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. Uygulamanızın ilgili API'ye erişim olmadan çalışamayan tüm özelliklerini devre dışı bırakın.

İsteğinize dahil edilen kapsam, kullanıcı istenen tüm kapsamları vermiş olsa bile yanıtınızda yer alan kapsam ile eşleşmeyebilir. Erişim için gerekli kapsamlar için her Google API'sinin belgelerine bakın. Bir API, birden çok kapsam dizesi değerini tek bir erişim kapsamıyla eşleyerek istekte izin verilen tüm değerler için aynı kapsam dizesini döndürebilir. Örnek: Google People API, bir uygulama bir kullanıcıdan https://www.google.com/m8/feeds/ kapsamına yetki vermesini istediğinde https://www.googleapis.com/auth/contacts kapsamını döndürebilir; people.updateContact Google People API yöntemi, https://www.googleapis.com/auth/contacts için izin verilen bir kapsam gerektirir.

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

Bir uygulama bir erişim jetonu aldıktan sonra jetonu bir HTTP Yetkilendirme isteği başlığında bir Google API’ya 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ında bulunabilir. 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 simge isteğinin scope açıklanan işlemler ve kaynaklar kümesi için geçerlidir. Örneğin, Google Takvim API'si için bir erişim jetonu verilirse, Google Contacts API'ye erişim izni vermez. Ancak, benzer işlemler için bu erişim jetonunu Google Takvim API'sına birden çok kez gönderebilirsiniz.

5. Gerekirse erişim belirtecini yenileyin.

Erişim belirteçlerinin sınırlı yaşam süreleri vardır. Uygulamanızın, tek bir erişim jetonunun kullanım süresinin ötesinde bir Google API'ye erişmesi gerekiyorsa, bir yenileme jetonu 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ı, oturum seçimi ve kullanıcı izni ile ilgilenir. Sonuç, uygulamanın bir erişim belirteci ve bir yenileme belirteci ile değiş tokuş edebileceği bir yetkilendirme kodudur.

Uygulama, yenileme jetonunu ileride kullanmak üzere saklamalı ve bir Google API'sına erişmek için erişim jetonunu kullanmalıdır. Erişim belirtecinin süresi dolduktan sonra, uygulama yenisini almak için yenileme belirtecini kullanır.

Uygulamanız, Google Yetkilendirme Sunucusuna bir jeton isteği gönderir, bir yetkilendirme kodu alır, kodu bir jetonla değiştirir ve jetonu bir Google API uç noktası ç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üklenmiş 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, uygulamanızın kaynak koduna eklediğiniz bir istemci kimliği ve bazı durumlarda bir istemci sırrı ile sonuçlanır. (Bu bağlamda, müşteri sırrı açıkça bir sır olarak ele alınmamaktadır.)

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ı, oturum seçimi ve kullanıcı izni ile ilgilenir. Sonuç, uygulamanın bir erişim belirteci ve bir yenileme belirteci ile değiş tokuş edebileceği bir yetkilendirme kodudur.

Uygulama, yenileme jetonunu ileride kullanmak üzere saklamalı ve bir Google API'ye erişmek için erişim jetonunu kullanmalıdır. Erişim belirtecinin süresi dolduktan sonra, uygulama yenisini almak için yenileme belirtecini kullanır.

Uygulamanız, Google Yetkilendirme Sunucusuna bir jeton isteği gönderir, bir yetkilendirme kodu alır, kodu bir jetonla değiştirir ve jetonu bir Google API uç noktası ç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ı, oturum seçimi ve kullanıcı izni ile ilgilenir.

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

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

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

Sınırlı girişli cihazlardaki 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ı ile 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ı, URL'yi ve kodu cihazdan 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 jetonunu ileride kullanmak üzere saklamalı ve bir Google API'sına erişmek için erişim jetonunu kullanmalıdır. Erişim belirtecinin süresi dolduktan sonra, uygulama yenisini almak için yenileme belirtecini kullanır.

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

Ayrıntılar için Cihazlar için OAuth 2.0'ı Kullanma konusuna bakın.

Servis 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 herhangi bir kullanıcı izni gerekmez. Benzer şekilde, kurumsal senaryolarda, uygulamanız bazı kaynaklara temsili erişim isteyebilir.

Bu tür sunucudan sunucuya 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ı izni gerekmez. (Hizmet dışı hesap senaryolarında, uygulamanız son kullanıcılar adına Google API'lerini çağırır ve bazen kullanıcı izni gerekir.)

Google API Console'den edindiğiniz bir hizmet hesabının kimlik bilgileri, benzersiz olan oluşturulmuş bir 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 istemci kimliğini ve bir özel anahtarı kullanırsınız. Uygulamanız daha sonra jeton isteğini Google OAuth 2.0 Yetkilendirme Sunucusuna gönderir ve bu da bir erişim jetonu döndürür. Uygulama, jetonu bir Google API'sına erişmek için kullanır. Jetonun süresi dolduğunda, uygulama işlemi tekrarlar.

Sunucu uygulamanız, Google Yetkilendirme Sunucusundan bir jeton istemek için bir JWT kullanır, ardından jetonu bir Google API uç noktası çağırmak için kullanır. Hiçbir son kullanıcı dahil değildir.

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

Jeton boyutu

Jetonların boyutları 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 farklı jeton boyutu sınırlarına sahiptir. Ayrıntılar için API belgelerine bakın .

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

Jetonun sona erme tarihini yenile

Verilen bir yenileme belirtecinin artık çalışmayabileceğini tahmin etmek için kodunuzu yazmalısınız. Yenileme jetonu, 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ı şifreleri değiştirdi ve yenileme belirteci Gmail kapsamlarını içeriyor.
  • Kullanıcı hesabı, verilen (canlı) maksimum yenileme jetonu sayısını aştı.
  • Kullanıcı, oturum kontrol politikaları yürürlükte olan bir Google Cloud Platform kuruluşuna aittir.

Harici bir kullanıcı türü için yapılandırılmış bir OAuth izin ekranına ve "Testing" yayınlama durumuna sahip bir Google Cloud Platform projesine, 7 gün içinde süresi dolan 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 jetonu oluşturmak, en eski yenileme jetonunu uyarı vermeden 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 belirteci sayısı için 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 geliştiricinin hesabı olabilir.

Birden çok programı, makineyi veya cihazı yetkilendirmeniz gerekiyorsa, bir geçici çözüm, Google Hesabı başına yetkilendirdiğiniz istemci sayısını 15 veya 20 ile sınırlandırmaktır. Google Çalışma Alanı yöneticisiyseniz , yönetici ayrıcalıklarına sahip ek kullanıcılar oluşturabilirsiniz ve bazı müşterileri yetkilendirmek için bunları kullanın.

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

GCP kuruluşlarının yöneticileri, GCP kaynaklarına erişirken kullanıcıların Google Cloud oturum kontrolü özelliğini kullanarak 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 Cloud Platform kapsamını gerektiren herhangi bir üçüncü taraf OAuth uygulamasına erişimi etkiler. Bir kullanıcının yerinde bir oturum kontrol politikası varsa, o zaman oturum süresinin sona ermesi üzerine, API çağrılarınız, yenileme jetonunun iptal edilmesi durumunda olacağına benzer şekilde hata verecektir. Oturum süreleri çok sınırlı olabildiğinden (1 saat ile 24 saat arasında), bu senaryo bir kimlik doğrulama oturumu yeniden başlatılarak zarif bir şekilde ele alınmalıdır.

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

Müşterilerinizin bu özelliği kullanmalarına nasıl yardımcı olacağınız 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.