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 kullanmak OAuth 2.0 protokolünü kimlik doğrulama ve yetkilendirme için. 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, OAuth 2.0 istemci kimlik bilgilerini elde Google API Console . 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 kullanan interaktif bir gösteri için birlikte deney (kendi istemci kimlik bilgilerini kullanma seçeneğini dahil) OAuth 2.0 Bahçesi .

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ılı bilgi 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:

OAuth 2.0 kimlik bilgilerini elde 1. Google API Console.

Ziyaret Google API Console Google ve uygulamanıza hem bilinen bir istemci kimliği ve müşteri sırrı olarak OAuth 2.0 kimlik edinme. 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. Bir değişken parametre olarak adlandırılan scope kaynaklar ve işlemler kümesi bir erişim belirteci izin olduğunu kontrolleri. Erişim belirteci isteği sırasında, uygulama bir veya daha fazla değer gönderiyor scope parametresi.

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 süreç kullanıcı izni 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 Artan yetki .

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: Google Kişiler API'sı bir kapsamını döndürebilir https://www.googleapis.com/auth/contacts bir uygulama, bir kullanıcı bir kapsam yetki istendiğinde https://www.google.com/m8/feeds/ ; Google Kişiler API yöntemi people.updateContact bir verilen kapsamı gerektirir https://www.googleapis.com/auth/contacts .

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

Bir uygulama belirteci bir erişim elde sonra bir bir Google API belirteci gönderir HTTP Yetkilendirme isteği başlığında . 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 sadece tarif edilen işlemler ve kaynakların kümesi için geçerlidir scope belirteci isteği. Ö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. Eğer yoluyla bir müşteri ID oluşturun Google API Console , bu Yüklenmiş bir uygulama olduğunu belirttikten sonra uygulama türü olarak Android'i, Chrome uygulamasını, 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.

Sunucu-sunucu etkileşimleri bu türleri için uygulamanıza yerine bireysel son kullanıcıya ait bir hesap olan bir hizmet hesabı gerekir. 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.)

Eğer elde ettiğimiz bir servis hesabının kimlik bilgileri, Google API Console, benzersiz olarak oluşturulmuş bir e-posta adresi, bir istemci kimliği ve en az bir kamu / ö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 bkz hizmet hesap belgelerine .

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

Erişim, Google Cloud'un tarafından döndürülen jetonudur Güvenlik Jetonu Servis API Google API OAuth 2.0 erişim belirteçleri benzer şekilde yapılandırılır ancak farklı simge boyut sınırları vardır. Ayrıntılar için bkz API belgelerini .

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ı etti uygulamanızın erişimini iptal .
  • 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 için geçerli değildir hizmet hesapları .

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, makine veya cihazların yetki gerekiyorsa, bir geçici çözüm bir iseniz 15 veya 20'ye Google Hesabı başına yetki istemci sayısını sınırlamak için Google Çalışma Alanı yönetici yönetici ayrıcalıkları ve ek kullanıcılar oluşturabilir, bazı istemcileri yetkilendirmek için bunları kullanın.

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

Onlar GSO kaynaklarına erişmek ederken GSO kuruluşlarının yöneticileri kullanarak, kullanıcıların sık yeniden kimlik doğrulaması gerektirebilir Google Bulut oturumu kontrol özelliği . Bu politika etkileri hakkında Cloud Console, erişim Google Bulut SDK (ayrıca gcloud CLI olarak da bilinir), ve Bulut Platformu kapsamını gerektiren herhangi bir üçüncü taraf OAuth uygulaması. Bir kullanıcı oturum süresinin dolması üzerine daha sonra yerinde bir oturum kontrolü politikası varsa, API çağrıları iptal edildi belirtecinin yenilenmesi ne olacağını benzer dışarı hata olacaktır - çağrı bir hata türüyle başarısız olur invalid_token ; alt hata türü, bir iptal belirteci ile bir oturum kontrol ilkesinden kaynaklanan bir hata arasında ayrım yapmak için kullanılabilir. 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üşterileriniz bu özelliği dağıtmak yardımcı konusunda daha fazla bilgi için, bu bakın yönetici-odaklanmış yardım makalesinde.

İ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.