FedCM API'leriyle Google ile Oturum Açma

Bu kılavuzda, FedCM API'lerinin Google ile Oturum Açma platform kitaplığı tarafından benimsenmesi ele alınmaktadır. Kitaplıkta geriye dönük uyumlu bir güncelleme için zaman çizelgesi ve sonraki adımlar, etki değerlendirmesi yapma ve kullanıcı oturum açma işleminin beklendiği gibi çalışmaya devam ettiğini doğrulama, gerekirse web uygulamanızı güncelleme talimatları gibi konular ele alınmaktadır. Geçiş dönemini yönetme seçenekleri ve yardım alma hakkında da bilgi verilmektedir.

Kitaplığın durumu

Yeni web uygulamalarının desteği sonlandırılan Google ile oturum açma platform kitaplığını kullanması engellenir. Kitaplığı kullanan uygulamalar ise bir sonraki duyuruya kadar kullanmaya devam edebilir. Kitaplığın kullanımdan kaldırılma tarihi henüz belirlenmedi. Daha fazla bilgi için Desteğin sonlandırılması ve kullanımdan kaldırılması başlıklı makaleyi inceleyin.

Geriye dönük uyumlu bir güncellemeyle Google ile oturum açma kitaplığına FedCM API'leri eklendi. Çoğu değişiklik sorunsuz olsa da güncelleme; kullanıcı istemleri, iframe izinler-politikası ve İçerik Güvenliği Politikası'nda (İGP) farklılıklara da neden olmaktadır. Bu değişiklikler web uygulamanızı etkileyebilir ve uygulama kodunda ve site yapılandırmasında değişiklik yapılmasını gerektirebilir.

Geçiş döneminde, FedCM API'lerinin kullanıcı oturum açma sırasında kullanılıp kullanılmayacağını bir yapılandırma seçeneği kontrol eder.

Geçiş döneminden sonra, FedCM API'leri Google ile oturum açma kitaplığını kullanan tüm web uygulamaları için zorunludur.

Zaman çizelgesi

Son güncelleme Eylül 2024

Kullanıcıların oturum açma davranışını etkileyen tarihler ve değişiklikler şunlardır:

  • Mart 2023 Google ile Oturum Açma platform kitaplığı için desteğin sonlandırılması.
  • Temmuz 2024 Geçiş dönemi başlar ve FedCM API'leri için Google ile oturum açma platform kitaplığı desteği eklenir. Varsayılan olarak Google, bu süre zarfında FedCM'yi kullanarak kullanıcı oturum açma isteklerinin yüzdesini kontrol eder. Web uygulamaları, use_fedcm parametresini kullanarak bu davranışı açıkça geçersiz kılabilir.
  • Google Sign-in platform kitaplığı tarafından FedCM API'lerinin Mart 2025'te zorunlu olarak benimsenmesi. Bu tarihten sonra use_fedcm parametresi yoksayılır ve tüm kullanıcı oturum açma istekleri FedCM'den yararlanır.

Sonraki adımlar

Uygulayabileceğiniz üç seçenek vardır:

  1. Etki değerlendirmesi yapın ve gerekirse web uygulamanızı güncelleyin. Bu yaklaşım, web uygulamanızda değişiklik gerektiren özelliklerin kullanımda olup olmadığını değerlendirir. Talimatlar bu kılavuzun bir sonraki bölümünde verilmiştir.
  2. Google Kimlik Hizmetleri (GIS) kitaplığına taşındı. En son ve desteklenen oturum açma kitaplığına geçmenizi önemle tavsiye ederiz. Bunu yapmak için bu talimatları uygulayın.
  3. Hiçbir işlem yapmamayı tercih edebilirsiniz. Google ile oturum açma kitaplığı, kullanıcı oturum açma için FedCM API'lerine taşındığında web uygulamanız otomatik olarak güncellenir. Bu yöntem en az çalışma gerektirir ancak kullanıcıların web uygulamanızda oturum açamama riski vardır.

Etki değerlendirmesi yapın

Web uygulamanızın geriye dönük uyumlu bir güncellemeyle sorunsuz bir şekilde güncellenip güncellenemeyeceğini veya Google ile oturum açma platform kitaplığı FedCM API'lerini tam olarak benimsediğinde kullanıcıların oturum açamamasını önlemek için değişiklik yapılması gerekip gerekmediğini belirlemek üzere bu talimatları uygulayın.

Kurulum

Kullanıcı oturum açarken FedCM'yi kullanmak için tarayıcı API'leri ve Google ile Oturum Açma platform kitaplığının en son sürümü gereklidir.

Devam etmeden önce:

  • Masaüstü için Chrome'u en son sürüme güncelleyin. Android için Chrome, M128 veya sonraki sürümleri gerektirir ve önceki sürümler kullanılarak test edilemez.
  • chrome://flags uygulamasını açın ve aşağıdaki özellikleri bu değerlere ayarlayın:

    • #fedcm-authz Etkin
    • #tracking-protection-3pcd Etkin
    • #third-party-cookie-deprecation-trial Devre dışı
    • #tpcd-metadata-grants Devre dışı
    • #tpcd-heuristics-grants Devre dışı

    ve Chrome'u yeniden başlatın.

  • Web uygulamanızda Google ile oturum açma platform kitaplığını başlatırken use_fedcm değerini true olarak ayarlayın. Başlatma işlemi genellikle şöyle görünür:

    • gapi.client.init({use_fedcm: true}) veya
    • gapi.auth2.init({use_fedcm: true}) veya
    • gapi.auth2.authorize({use_fedcm: true}).
  • Google ile oturum açma platform kitaplığının önbelleğe alınmış sürümlerini geçersiz kılabilirsiniz. Kitaplığın en son sürümü, <script src> etiketine api.js, client.js veya platform.js eklenerek doğrudan tarayıcıya indirildiğinden genellikle bu adım gerekmez (istek, kitaplık için bu paket adlarından herhangi birini kullanabilir).

  • OAuth istemci kimliğiniz için OAuth ayarlarını onaylayın:

    1. Google API Consoleöğesinin Kimlik bilgileri sayfasını açın
    2. Web sitenizin URI'sinin Yetkilendirilmiş JavaScript kaynakları'na dahil edildiğinden emin olun. URI yalnızca şemayı ve tam nitelikli ana makine adını içerir. Örneğin, https://www.example.com.

    3. İsteğe bağlı olarak, kimlik bilgileri bir JavaScript geri çağırması yerine barındırdığınız bir uç noktaya yönlendirme kullanılarak döndürülebilir. Bu durumda, yönlendirme URI'larınızın Yetkili yönlendirme URI'lerine dahil edildiğini doğrulayın. Yönlendirme URI'leri şemayı, tam nitelikli ana makine adını ve yolu içerir ve yönlendirme URI'si doğrulama kurallarına uygun olmalıdır. Örneğin, https://www.example.com/auth-receiver.

Test

Kurulumdaki talimatları uyguladıktan sonra:

Google ile oturum açma kitaplık isteğini bulma

Google ile oturum açma platform kitaplığı için isteği inceleyerek permissions-policy ve İçerik Güvenliği Politikası değişikliklerinin gerekli olup olmadığını kontrol edin. Bunu yapmak için kitaplığın adını ve kaynağını kullanarak isteği bulun:

  • Chrome'da Geliştirici Araçları panelini açıp sayfayı yeniden yükleyin.
  • Kitaplık isteğini bulmak için Alan ve Ad sütunlarındaki değerleri kullanın:
    • Alan adı apis.google.com ve
    • Ad api.js, client.js veya platform.js olmalıdır. Ad özelliğinin belirli değeri, belge tarafından istenen kitaplık paketine bağlıdır.

Örneğin, Alan sütununda apis.google.com ve Ad sütununda platform.js ile filtreleme yapın.

Iframe izinleri politikasını kontrol edin

Siteniz, kaynaklar arası iframe içinde Google ile Oturum Açma platform kitaplığını kullanabilir. Öyleyse güncelleme yapmanız gerekir.

Google ile oturum açma kitaplığı isteğini bulma talimatlarını uyguladıktan sonra DevTools panelinde Google ile oturum açma kitaplığı isteğini seçin ve Başlıklar sekmesindeki İstek Başlıkları bölümünde Sec-Fetch-Site başlığını bulun. Üstbilginin değeri şu şekildeyse:

  • same-site veya same-origin ise kökler arası politikalar geçerli değildir ve değişiklik yapılması gerekmez.
  • cross-origin değişiklikleri gerekebilir.

Bir iframe olup olmadığını onaylamak için:

  • Chrome Geliştirici Araçları'nda Öğeler panelini seçin ve
  • Dokümanda iframe bulmak için Ctrl-F tuşlarını kullanın.

Bir iframe bulunursa gapi.auth2 işlevlerine veya iframe içinde Google ile oturum açma kitaplığını yükleyen script src yönergelerine yönelik çağrıları kontrol etmek için dokümanı inceleyin. Böyle bir durumda:

Bu işlemi, dokümandaki her iframe için tekrarlayın. iframe'ler iç içe yerleştirilebilir. Bu nedenle, etrafındaki tüm üst iframe'lere allow yönergesini eklediğinizden emin olun.

İçerik Güvenliği Politikası'nı Kontrol Edin

Sitenizde İçerik Güvenliği Politikası kullanılıyorsa Google ile oturum açma kitaplığının kullanımına izin vermek için İGP'nizi güncellemeniz gerekebilir.

Google ile Oturum Açma kitaplığı isteğini bulma talimatlarını uyguladıktan sonra Geliştirici Araçları panelinde Google ile Oturum Açma kitaplığı isteğini seçin ve Başlıklar sekmesinin Yanıt Başlıkları bölümünde Content-Security-Policy başlığını bulun.

Başlık bulunamazsa herhangi bir değişiklik yapmanız gerekmez. Aksi takdirde, bu CSP yönergelerinden herhangi birinin CSP başlığında tanımlanıp tanımlanmadığını kontrol edin ve aşağıdakileri yaparak güncelleyin:

  • connect-src, default-src veya frame-src yönergelerine https://apis.google.com/js/, https://accounts.google.com/gsi/ ve https://acounts.google.com/o/fedcm/ ekleme

  • script-src yönergesine https://apis.google.com/js/bundle-name.js ekleme. bundle-name.js değerini, doküman isteklerinin kitaplık paketine göre api.js, client.js veya platform.js ile değiştirin.

Kullanıcı istemi değişikliklerini kontrol etme

Kullanıcı istemi davranışında bazı farklılıklar vardır. FedCM, tarayıcı tarafından görüntülenen bir modal iletişim kutusu ekler ve kullanıcı etkinleştirme koşullarını günceller.

FedCM modal iletişim kutusunun resmi

Temel içeriğin, tarayıcının modal iletişim kutusu tarafından güvenli bir şekilde örtülebildiğini ve geçici olarak gizlenebileceğini doğrulamak için sitenizin düzenini inceleyin. Aksi takdirde, web sitenizdeki bazı öğelerin düzenini veya konumunu ayarlamanız gerekebilir.

Kullanıcı etkinleştirme

FedCM, güncellenmiş kullanıcı etkinleştirme koşullarını içerir. Bir düğmeye basmak veya bir bağlantıyı tıklamak, üçüncü taraf kaynakların ağ isteklerinde bulunmasına ya da veri depolamasına olanak tanıyan kullanıcı hareketlerine örnektir. FedCM ile tarayıcı, şu durumlarda kullanıcı izni ister:

  • Kullanıcı bir web uygulamasında ilk kez yeni bir tarayıcı örneği kullanarak oturum açtığında veya
  • GoogleAuth.signIn çağrılır.

Günümüzde, kullanıcı web sitenizde daha önce oturum açtıysa gapi.auth2.init kullanarak Google ile oturum açma kitaplığını başlatırken başka kullanıcı etkileşimi olmadan kullanıcının oturum açma bilgilerini alabilirsiniz. Kullanıcı en az bir kez FedCM oturum açma akışında bulunmadığı sürece bu artık mümkün değildir.

FedCM'yi etkinleştirip GoogleAuth.signIn'ü çağırarak, aynı kullanıcı web sitenizi bir sonraki ziyaret ettiğinde gapi.auth2.init, kullanıcı etkileşimi olmadan başlatma sırasında kullanıcının oturum açma bilgilerini edinebilir.

Yaygın kullanım örnekleri

Google Sign-In kitaplığıyla ilgili geliştirici dokümanları, yaygın kullanım alanlarına yönelik kılavuzlar ve kod örnekleri içerir. Bu bölümde, FedCM'nin kullanıcıların davranışlarını nasıl etkilediği ele alınmaktadır.

  • Google ile oturum açma özelliğini web uygulamanıza entegre etme

    Bu demo'da düğmeyi bir <div> öğesi ve sınıfı oluşturur. Zaten oturum açmış kullanıcılar için sayfa onload etkinliği, kullanıcı kimlik bilgilerini döndürür. Oturum açmak ve yeni bir oturum oluşturmak için kullanıcı etkileşimi gereklidir.

    Kitaplık ilklendirmesi, gapi.load ve gapi.auth2.init sınıflarını çağıran g-signin2 sınıfı tarafından yapılır.

    Bir kullanıcı hareketi, bir <div> öğesi onclick etkinliği, oturum açma sırasında auth2.signIn veya oturum kapatılırken auth2.signOut komutunu çağırır.

  • Özel bir Google ile Oturum Açma düğmesi oluşturma

    Birinci demoda, oturum açma düğmesinin görünümünü kontrol etmek için özel özellikler kullanılır ve zaten oturum açmış kullanıcılar için sayfa onload etkinliği kullanıcı kimlik bilgilerini döndürür. Oturum açmak ve yeni bir oturum oluşturmak için kullanıcı etkileşimi gerekir.

    Kitaplık ilk başlatılması, platform.js kitaplığı için bir onload etkinliği aracılığıyla yapılır ve düğme gapi.signin2.render tarafından gösterilir.

    Oturum açma düğmesine basıldığında auth2.signIn adlı kullanıcı hareketi aranır.

    İkinci denemede, oturum açma düğmesinin görünümünü kontrol etmek için bir <div> öğesi, CSS stilleri ve özel bir grafik kullanılır. Oturum açmak ve yeni bir oturum oluşturmak için kullanıcı etkileşimi gereklidir.

    Kitaplık başlatma işlemi, doküman yüklenirken gapi.load, gapi.auth2.init ve gapi.auth2.attachClickHandler'yi çağıran bir başlangıç işlevi kullanılarak yapılır.

    Kullanıcı hareketi (<div> öğesi onclick etkinliği), oturum açma sırasında auth2.attachClickHandler'ı veya oturum kapatma sırasında auth2.signOut'ı kullanarak auth2.signIn'yi çağırır.

  • Kullanıcının oturum durumunu izleme

    Bu demo'da, kullanıcının oturum açması ve kapatması için bir düğmeye basılması gerekir. Oturum açmak ve yeni bir oturum oluşturmak için kullanıcı etkileşimi gerekir.

    Kitaplık başlatma işlemi, script src kullanılarak platform.js yüklendikten sonra gapi.load, gapi.auth2.init ve gapi.auth2.attachClickHandler() çağrıları doğrudan yapılarak yapılır.

    Kullanıcı hareketi (<div> öğesi onclick etkinliği), oturum açma sırasında auth2.attachClickHandler'ı veya oturum kapatma sırasında auth2.signOut'ı kullanarak auth2.signIn'yi çağırır.

  • Ek izin isteme

    Bu demo'da, ek OAuth 2.0 kapsamları istemek ve yeni bir erişim jetonu almak için bir düğmeye basılır. Zaten oturum açmış kullanıcılar için sayfa onload etkinliği, kullanıcı kimlik bilgilerini döndürür. Oturum açmak ve yeni bir oturum oluşturmak için kullanıcı etkileşimi gerekir.

    Kitaplık ilk başlatılması, platform.js kitaplığı için onload etkinliği tarafından gapi.signin2.render çağrısı üzerinden yapılır.

    Bir <button> öğesini tıklayan kullanıcı hareketi, oturum kapatma sırasında googleUser.grant veya auth2.signOut kullanılarak ek OAuth 2.0 kapsamları için istek tetikler.

  • İşleyicileri kullanarak Google ile Oturum Açma'yı entegre etme

    Bu demo'da, oturum açmış kullanıcılar için sayfa onload etkinliği kullanıcı kimlik bilgilerini döndürür. Oturum açmak ve yeni bir oturum başlatmak için kullanıcı etkileşimi gereklidir.

    Kitaplık başlatma işlemi, doküman yüklenirken gapi.load, gapi.auth2.init ve gapi.auth2.attachClickHandler çağıran bir başlangıç işlevi kullanılarak yapılır. Ardından, oturum durumundaki değişikliklerle ilgili bildirim ayarlamak için auth2.isSignedIn.listen ve auth2.currentUser.listen kullanılır. Son olarak, auth2.SignIn, oturum açmış kullanıcıların kimlik bilgilerini döndürmek için çağrılır.

    Bir kullanıcı hareketi (<div> öğesi onclick etkinliği), oturum açma sırasında auth2.attachClickHandler veya oturumu kapatırken auth2.signOut kullanarak auth2.signIn öğesini çağırır.

  • Sunucu tarafı uygulamalar için Google ile oturum açma

    Bu demo'da, OAuth 2.0 kimlik doğrulama kodu istemek için bir kullanıcı hareketi kullanılır ve JS geri çağırma işlevi, yanıtı doğrulama için arka uç sunucuya göndermek üzere bir AJAX çağrısı yapar.

    Kitaplık ilk başlatılması, platform.js kitaplığı için bir onload etkinliği kullanılarak yapılır. Bu etkinlik, gapi.load ve gapi.auth2.init'ı çağırmak için bir başlangıç işlevi kullanır.

    Bir <button> öğesini tıklayan kullanıcı hareketi, auth2.grantOfflineAccess yöntemini çağırarak yetkilendirme kodu isteğini tetikler.

  • Platformlar arası TOA

    FedCM, Android kullanıcıları halihazırda oturum açmış olsa bile, her tarayıcı örneği için tek seferlik izin verilmesini gerektirir.

Geçiş dönemini yönetme

Geçiş döneminde, kullanıcı oturum açma işlemlerinin bir yüzdesi FedCM'yi kullanabilir. Kesin yüzde değişiklik gösterebilir ve zaman içinde değişebilir. Varsayılan olarak, Google kaç oturum açma isteği için FedCM'yi kullanacağını kontrol eder. Ancak geçiş döneminde FedCM'yi etkinleştirmeyi veya devre dışı bırakmayı seçebilirsiniz. Geçiş döneminin sonunda FedCM zorunlu hale gelir ve tüm oturum açma istekleri için kullanılır.

Kaydolmayı seçmek, kullanıcıyı FedCM oturum açma akışı üzerinden gönderir. Devre dışı bırakmayı seçtiğinizde kullanıcılar ise mevcut oturum açma akışı üzerinden gönderilir. Bu davranış, use_fedcm parametresi kullanılarak kontrol edilir.

Etkinleştir

Sitenizdeki oturum açma girişimlerinin tümünün veya bazılarının FedCM API'lerini kullanıp kullanmadığını kontrol etmek yararlı olabilir. Bunu yapmak için platform kitaplığını başlatırken use_fedcm değerini true olarak ayarlayın. Bu durumda kullanıcı oturum açma isteği, FedCM API'lerini kullanır.

Devre dışı bırakma

Geçiş dönemi boyunca, sitenizdeki kullanıcı oturum açma denemelerinin bir yüzdesi varsayılan olarak FedCM API'lerini kullanır. Uygulamanızda değişiklik yapmak için daha fazla zamana ihtiyacınız olursa FedCM API'lerini geçici olarak devre dışı bırakabilirsiniz. Bunu yapmak için platform kitaplığını başlatırken use_fedcm değerini false olarak ayarlayın. Bu durumda kullanıcı oturum açma isteği, FedCM API'lerini kullanmaz.

Zorunlu kullanımdan sonra Google ile oturum açma platform kitaplığı, use_fedcm ayarlarını yoksayar.

Yardım alın

google-signin etiketini kullanarak Stack Overflow'da arama yapın veya soru sorun.