Google Kimlik Hizmetleri veya yetkilendirme konusunda yeniyseniz ya da bu konulara aşina değilseniz Genel Bakış başlıklı makaleyi okuyarak başlayın.
Google, kapsamları yönetmenize, kullanıcı izni almanıza ve standart OAuth 2.0 akışlarıyla çalışmayı basitleştirmenize yardımcı olacak yetkilendirme özelliklerini içeren bir JavaScript kitaplığı sunar. Kullanıcının tarayıcısında çalışan web uygulamanız, OAuth 2.0 dolaylı akışını yönetmek veya arka uç platformunuzda tamamlanan yetkilendirme kodu akışını başlatmak için bu kitaplığı kullanır.
Yalnızca kimlik doğrulama kapsamları
Yalnızca kullanıcı kimlik doğrulaması için kullanılan birkaç kapsam vardır: email, profile ve openid. Uygulamanız yalnızca bu kapsamları kullanıyorsa kullanıcı kaydı ve oturum açma için JWT kimlik jetonu ile Google ile Oturum Açma'nın ihtiyaçlarınızı karşılayıp karşılamadığını değerlendirin. Çoğu durumda, bu yöntem kullanıcı kimlik doğrulaması için kullanılabilen en basit yöntemdir.
Temel terimler ve kavramlar
Bu kılavuzlarda, OAuth 2.0 kavramları ve RFC6749 gibi IETF standartları hakkında temel düzeyde bilgi sahibi olduğunuz varsayılır. Yetkilendirme kılavuzlarında aşağıdaki terimler kullanılır:
- Erişim jetonu, Google tarafından verilen ve Google API'lerini güvenli bir şekilde çağırmak ve kullanıcı verilerine erişmek için kullanılan, kullanıcı başına kısa ömürlü bir kimlik bilgisidir.
- Yetkilendirme kodu, Google tarafından, Google Hesaplarında tarayıcıdan oturum açan kullanıcıları güvenli bir şekilde tanımlamak için verilen geçici bir koddur. Arka uç platformunuz bu kodu erişim ve yenileme jetonlarıyla değiştirir.
- Yenileme jetonu, Google tarafından verilen ve kullanıcı başına uzun ömürlü olan bir kimlik bilgisidir. Bu jeton, platformunuzda güvenli bir şekilde saklanır ve kullanıcı mevcut olmasa bile yeni, geçerli bir erişim jetonu almak için kullanılabilir.
- Kapsam, jetonları tanımlanmış ve sınırlı miktarda kullanıcı verisiyle kısıtlar. Daha fazla bilgi için Google API'leri için OAuth 2.0 Kapsamları başlıklı makaleyi inceleyin.
- Pop-up modu, kullanıcının tarayıcısında çalışan bir JavaScript geri çağırma işlevine dayalı bir yetkilendirme kodu akışıdır. Google, geri çağırma işleyicinizi çağırır. Bu işleyici, yetkilendirme kodunu platformunuza göndermekten sorumludur. Bu işlemin nasıl yapılacağı size bağlıdır.
- Yönlendirme modu, HTTP yönlendirmelerine dayalı bir yetkilendirme kodu akışıdır. Kullanıcı aracısı önce Google'a yönlendirilir. Google'dan platformunuzun yetkilendirme kodu uç noktasına yapılan ikinci yönlendirme, kodu içerir.
Jetonların geçerlilik süreleri, veren taraf olarak Google tarafından belirlenir. Çeşitli faktörler nedeniyle tam süre değişebilir.
OAuth 2.0 akışları
Dolaylı ve yetkilendirme kodu olmak üzere iki akış ele alınır. Her ikisi de Google API'leriyle kullanıma uygun bir erişim jetonu döndürür.
Kullanıcı güvenliğini artırdığı için yetkilendirme kodu akışı önerilir. Bu akış, kullanıcının varlığı olmadan erişim jetonları almak için kullanılabilecek bir yenileme jetonu da döndürür. Böylece platformunuz, son dakikada planlanan yaklaşan bir toplantının SMS hatırlatıcısını gönderme gibi eşzamansız işlemler gerçekleştirebilir. Yetkilendirme modeli seçme başlıklı makalede, iki akış arasındaki farklar daha ayrıntılı olarak açıklanmaktadır.
Google Kimlik Hizmetleri JavaScript kitaplığı, OAuth 2.0 standardına uyarak:
- tarayıcı içi web uygulamanızın Google API'lerini çağırmak için gerekli olan erişim jetonunu Google'dan hızlı bir şekilde almasını sağlamak üzere örtülü akışı yönetin.
- Kullanıcının tarayıcısından yetkilendirme kodu akışını başlatın.
Genel adımlar
Hem örtülü hem de yetkilendirme kodu akışı aynı şekilde başlar:
- Uygulamanız bir veya daha fazla kapsama erişmek istiyor.
- Google, kullanıcıya bir izin iletişim kutusu gösterir ve gerekirse önce kullanıcının Google Hesabı'nda oturum açmasını sağlar.
- Kullanıcı, istenen her kapsamı ayrı ayrı onaylar.
Her akış farklı adımlarla tamamlanır.
Dolaylı akış kullanılırken
- Google, izin sonucunu uygulamanıza bildirmek ve onaylanan kapsamlar için erişim jetonu döndürmek üzere bir geri çağırma işleyici kullanır.
Yetkilendirme kodu akışı kullanılırken
- Google, kullanıcı başına bir yetkilendirme koduyla yanıt verir:
- Yönlendirme modunda kod, platformunuzun yetkilendirme kodu uç noktasına döndürülür.
- İletişim kutusu modunda, kullanıcıların web sitenizden ayrılması gerekmeden kod, tarayıcı içi uygulamanızın geri çağırma işleyicisine döndürülür.
- 4. adım: OAuth 2.0 sunucu yanıtını işleme bölümünden itibaren arka uç platformunuz, Google ile sunucudan sunucuya bir değişim gerçekleştirir. Bu değişim sonucunda, platformunuza kullanıcı başına bir yenileme jetonu ve erişim jetonu döndürülür.
Kullanıcı izni
Kullanıcılar, erişim jetonu almadan önce uygulamanızın istenen kapsamlara erişmesine izin vermelidir. Bunu yapmak için Google, 2. adımda bir izin iletişim kutusu gösterir ve sonucu myaccount.google.com/permissions adresine kaydeder.
Uygulama adınız, logonuz, gizlilik politikanız, hizmet şartlarınız ve istenen kapsamlar, kullanıcıya isteği onaylama veya iptal etme seçeneğiyle birlikte gösterilir.
Şekil 1'de tek bir kapsam için izin iletişim kutusu gösterilmektedir. Tek bir kapsam istendiğinde kapsamı onaylamak veya reddetmek için onay kutusu gerekmez.

Şekil 1: Tek kapsamlı kullanıcı izni iletişim kutusu.
Şekil 2'de birden fazla kapsam için izin iletişim kutusu gösterilmektedir. Birden fazla kapsam istendiğinde, kullanıcının her kapsamı onaylamasına veya reddetmesine izin vermek için ayrı onay kutuları gerekir.

Şekil 2: Birden fazla kapsam içeren kullanıcı izni iletişim kutusu.
Kullanıcı hesapları
İzin kaydetmek ve erişim jetonu vermek için Google Hesabı gerekir. Bunun öncesinde, kullanıcıların Google Hesabı'nda oturum açarak Google'da kimliklerini doğrulamış olmaları gerekir.
Zorunlu olmasa da web uygulamanıza veya arka uç platformunuza kaydolma ve oturum açma işlemleri için Google ile Oturum Açma özelliğinin kullanılması önerilir. Bu sayede, gerekli adım sayısı en aza indirilerek kullanıcı sürtünmesi azaltılır ve isteğe bağlı olarak erişim jetonlarını platformunuzdaki bireysel hesaplarla ilişkilendirebilirsiniz.
Örneğin, Google ile oturum açma özelliği kullanıldığında etkin bir Google Hesabı oturumu oluşturulur. Böylece, yetkilendirme isteğinde bulunurken kullanıcının daha sonra Google Hesabı'nda oturum açmasını istemeye gerek kalmaz. Kullanıcıların uygulamanızda kimliğini doğrulamak için kullanıcı adı ve şifre gibi başka yöntemler veya diğer kimlik sağlayıcıları kullanmayı tercih ederseniz kullanıcıların izin vermek için önce bir Google Hesabı'nda oturum açması gerekir.
Yetkilendirme başlatma sırasında oturum açma ipucu eklemek (genellikle kullanıcının Google Hesabı'nın e-posta adresi) Google'ın hesap seçiciyi göstermesini atlamasına olanak tanır ve kullanıcılar bir adımdan kurtulur. Google ile oturum açmak tarafından döndürülen kimlik jetonu kimlik bilgisi, kullanıcının e-posta adresini içerir.
Yalnızca tarayıcıda çalışan web uygulamaları, kullanıcı kimlik doğrulaması için yalnızca Google'ı kullanabilir ve kullanıcı hesabı yönetim sistemi uygulamamayı tercih edebilir. Bu senaryoda (dolaylı akış olarak bilinir), yenileme jetonunun bir kullanıcı hesabı ve yönetim güvenli depolama alanı ile ilişkilendirilmesine gerek yoktur.
Alternatif olarak, yetkilendirme kodu akışı için bir kullanıcı hesabı sistemi gerekir. Kullanıcı başına yenileme jetonları, arka uç platformunuzdaki ayrı bir hesapla ilişkilendirilmeli ve daha sonra kullanılmak üzere saklanmalıdır. Kullanıcı hesabı sisteminin nasıl uygulanacağı, kullanılacağı ve yönetileceği platformunuza özeldir ve daha ayrıntılı olarak ele alınmamıştır.
İzni görüntüleme ve iptal etme
Kullanıcılar, Google Hesabı ayarlarından izinlerini diledikleri zaman görüntüleyebilir veya iptal edebilir.
İsteğe bağlı olarak, web uygulamanız veya platformunuz, jetonları iptal etmek ve kullanıcı iznini kaldırmak için google.accounts.oauth2.revoke işlevini çağırabilir. Bu işlev, kullanıcı hesabını platformunuzdan sildiğinde kullanışlıdır.
Diğer yetkilendirme seçenekleri
Alternatif olarak, tarayıcılar OAuth 2.0 for Client-side Web Applications'da açıklandığı gibi Google'ın OAuth 2.0 uç noktalarını doğrudan çağırarak dolaylı akışı kullanarak erişim jetonları alabilir.
Benzer şekilde, yetkilendirme kodu akışı için kendi yöntemlerinizi uygulamayı ve Web Sunucusu Uygulamaları için OAuth 2.0'ı Kullanma başlıklı makalede belirtilen adımları uygulamayı tercih edebilirsiniz.
Her iki durumda da geliştirme sürenizi ve harcadığınız çabayı azaltmak, ayrıca OAuth 2.0 Security Best Current Practice'te açıklananlar gibi güvenlik risklerini en aza indirmek için Google Kimlik Hizmetleri kitaplığını kullanmanızı önemle tavsiye ederiz.