Google+ ile oturum açma bölümünden geçiş

Kapsam değişikliklerinin kullanıcılar üzerindeki etkisini en aza indirmeye yönelik adımlar

  1. Uygulamanız, kimliği doğrulanmış bir kullanıcının e-posta adresini gerektiriyorsa ve daha önce bu amaçla profile.emails.read kullandıysanız, bunun yerine email kullanın.
  2. Onaylanmış bir doğrulama isteği ile profile.emails.read için onay alın. Doğrulama için nasıl gönderebilirim? başlıklı makaleyi inceleyin.
  3. Kaldırılacak kapsam için önceki kullanıcı jetonunu iptal edin veya uygulamaya erişimi tamamen kaldırın. Örneğin, profile.emails.read erişimine sahip bir jetonun iptal edilmesi gerekir. İptal işlemini kullanıcılarınız başvurunuzdayken uygulamanızı öneririz. Böylece kullanıcı iznini hemen alabilirsiniz.
  4. Kullanıcılarınızdan yeni kapsamla (ör. email) profile.emails.read olmadan yeniden izin vermelerini isteyin.
  5. Google API'leri OAuth izin ekranı yapılandırmanızdan kaldırılacak olan kapsamı kaldırın.

Sitenizi Google+ ile Oturum Açma özelliğinden Google ile Oturum Açma'ya taşımak için yapmanız gereken değişiklikler, kullandığınız Google+ Oturum Açma akışına bağlıdır. Taşıma işlemi genellikle oturum açma düğmenizi, istenen kapsamları ve profil bilgilerini Google'dan nasıl alacağınıza ilişkin talimatları güncellemenizi gerektirir.

Oturum açma düğmenizi güncellerken Google+'ya başvurmayın veya kırmızı rengi kullanmayın. Güncellenen marka bilinci oluşturma yönergelerimize uyun.

Çoğu Google+ ile Oturum Açma uygulaması, bazı kapsam kombinasyonlarını istedi: plus.login, plus.me ve plus.profile.emails.read. Kapsamlarınızı aşağıdaki gibi yeniden eşlemeniz gerekir:

Eski kapsam Yeni kapsam
plus.login profile
plus.me openid
plus.profile.emails.read email

Google+ Oturum Açma özelliğini uygulayan çoğu kişi kod akışını kullandı. Bu da Android, iOS veya JavaScript uygulamalarının Google'dan OAuth kodu aldığı ve istemcinin bu kodu siteler arası istek sahtekarlığı korumasıyla birlikte sunucuya geri gönderdiği anlamına gelir. Sunucu, daha sonra kodu doğrular ve kullanıcı profili bilgilerini people.get API'den çekmek için yenileme ve erişim jetonlarını alır.

Google artık bir kimlik jetonu istemenizi ve bu kimlik jetonunu istemcinizden sunucunuza göndermenizi öneriyor. Kimlik jetonları siteler arası sahtecilik korumalarına sahiptir ve ayrıca sunucunuzda statik olarak da doğrulanabilir. Böylece, Google'ın sunucularından kullanıcı profili bilgilerini almak için fazladan API çağrısı yapılmasını önlerler. Sunucunuzdaki kimlik jetonlarını doğrulama talimatlarını uygulayın.

Profil bilgilerini almak için yine de kod akışını kullanmak isterseniz bunu yapabilirsiniz. Sunucunuzun erişim jetonu olduğunda, Oturum Açma Keşif dokümanımızda belirtilen userinfo uç noktalarından kullanıcı profili bilgilerini edinmeniz gerekir. API yanıtı, Google+ profili yanıtından farklı biçimlendirilmiş olduğundan ayrıştırmanızı yeni biçime güncellemeniz gerekir.

HTML oturum açma düğmesini taşıma

g-signin sınıfını bir öğeye atayarak sayfanıza bir Google+ ile Oturum Açma düğmesi eklediyseniz aşağıdaki değişiklikleri yapın:

  • İstemci kimliğinizi <meta> etiketinde, data- özelliğinde veya parametre nesnesinde belirtirken clientid dizesini aşağıdaki örnekte olduğu gibi client_id olarak değiştirin:

    <!-- Google+ Sign-in (old) -->
    <meta name="google-signin-clientid" content="YOUR_CLIENT_ID">
    

    <!-- Google Sign-in (new) -->
    <meta name="google-signin-client_id" content="YOUR_CLIENT_ID">
    
  • g-signin2 sınıfını, g-signin yerine oturum açma düğmesi öğesine atayın. Ayrıca, aşağıdaki örnekte olduğu gibi tek bir geri çağırma yerine ayrı başarılı ve başarısız geri çağırmalar belirtin:

    <!-- Google+ Sign-in (old) -->
    <div
      class="g-signin"
      data-callback="signinCallback">
    </div>
    

    <!-- Google Sign-in (new) -->
    <div
      class="g-signin2"
      data-onsuccess="onSignIn"
      data-onfailure="onSignInFailure">
    </div>
    
  • Tek bir geri çağırma işleyici yerine, aşağıdaki örnekte olduğu gibi başarı ve başarısız işleyicileri tanımlayın:

    // Google+ Sign-in (old)
    function signinCallback(authResult) {
      if (authResult['status']['signed_in']) {
        // Handle successful sign-in
      } else {
        // Handle sign-in errors
        console.log('Sign-in error: ' + authResult['error']);
      }
    }
    

    // Google Sign-in (new)
    function onSignIn(googleUser) {
      // Handle successful sign-in
    }
    function onSignInFailure() {
      // Handle sign-in errors
    }
    
  • Bu değişiklikler, varsayılan kapsamlarınızı profile email openid olarak günceller. Kullanıcının temel profil bilgilerini (ad, e-posta ve fotoğraf resmi URL'si gibi) aşağıdaki şekilde edinebilirsiniz:

    // Google Sign-in (new)
    function onSignIn(googleUser) {
      let profile = googleUser.getBasicProfile();
      let fullName = profile.getName();
      let email = profile.getEmail();
      let imageUrl = profile.getImageUrl();
    }
    

Dinamik olarak oluşturulan oturum açma düğmesini taşıma

gapi.signin.render() yöntemini çağırarak sayfanıza bir Google+ ile Oturum Açma düğmesi eklediyseniz aşağıdaki değişiklikleri yapın:

  • İstemci kimliğinizi <meta> etiketinde, data- özelliğinde veya parametre nesnesinde belirtirken clientid dizesini aşağıdaki örnekte olduğu gibi client_id olarak değiştirin:

    <!-- Google+ Sign-in (old) -->
    <meta name="google-signin-clientid" content="YOUR_CLIENT_ID">
    

    <!-- Google Sign-in (new) -->
    <meta name="google-signin-client_id" content="YOUR_CLIENT_ID">
    
  • Oturum açma düğmesini, aşağıdaki örnekte olduğu gibi gapi.signin.render() yerine gapi.signin2.render() ile oluşturun:

    // Google+ Sign-in (old)
    gapi.signin.render('myButton', additionalParams);
    

    // Google Sign-in (new)
    gapi.signin2.render('myButton', additionalParams);
    
  • Tek bir geri çağırma işleyici yerine, aşağıdaki örnekte olduğu gibi başarı ve başarısız işleyicileri tanımlayın:

    // Google+ Sign-in (old)
    function signinCallback(authResult) {
      if (authResult['status']['signed_in']) {
        // Handle successful sign-in
      } else {
        // Handle sign-in errors
        console.log('Sign-in error: ' + authResult['error']);
      }
    }
    

    // Google Sign-in (new)
    function onSignIn(googleUser) {
      // Handle successful sign-in
    }
    function onSignInFailure() {
      // Handle sign-in errors
    }
    

Bu değişiklikler, varsayılan kapsamlarınızı profile email openid olarak günceller. Kullanıcının temel profil bilgilerini getBasicProfile() yöntemiyle alabilirsiniz.

JavaScript tarafından başlatılan bir oturum açma akışını taşıma

Kullanıcılar oturum açma düğmesini tıkladığında gapi.auth.signIn() çağrısıyla oturum açma akışını başlattıysanız aşağıdaki değişiklikleri yapın:

  • İstemci kimliğinizi <meta> etiketinde, data- özelliğinde veya parametre nesnesinde belirtirken clientid dizesini aşağıdaki örnekte olduğu gibi client_id olarak değiştirin:

    <!-- Google+ Sign-in (old) -->
    <meta name="google-signin-clientid" content="YOUR_CLIENT_ID">
    

    <!-- Google Sign-in (new) -->
    <meta name="google-signin-client_id" content="YOUR_CLIENT_ID">
    
  • Aşağıdaki örnekte olduğu gibi bir düğmeye basıldığında oturum açma akışını başlatmak için gapi.auth2.attachClickHandler() öğesini kullanın:

    // Google+ Sign-in (old)
    var signinButton = document.getElementById('signinButton');
    signinButton.addEventListener('click', function() {
      gapi.auth.signIn(additionalParams);
    });
    

    // Google Sign-in (new)
    auth2 = gapi.auth2.init();
    auth2.attachClickHandler('signinButton', additionalParams, onSignIn, onSignInFailure);
    
  • Tek bir geri çağırma işleyici yerine, aşağıdaki örnekte olduğu gibi başarı ve başarısız işleyicileri tanımlayın:

    // Google+ Sign-in (old)
    function signinCallback(authResult) {
      if (authResult['status']['signed_in']) {
        // Handle successful sign-in
      } else {
        // Handle sign-in errors
        console.log('Sign-in error: ' + authResult['error']);
      }
    }
    

    // Google Sign-in (new)
    function onSignIn(googleUser) {
      // Handle successful sign-in
    }
    function onSignInFailure() {
      // Handle sign-in errors
    }
    

Bu değişiklikler, varsayılan kapsamlarınızı profile email openid olarak günceller. Kullanıcının temel profil bilgilerini getBasicProfile() yöntemini çağırarak alabilirsiniz.

Sunucu tarafı karma akışı taşıma

Sunucunuza iletmek üzere tek seferlik bir yetkilendirme kodu almak için JavaScript API'sini kullandıysanız aşağıdaki değişiklikleri yapın:

  • https://www.googleapis.com/auth/plus.login olan kapsamı profile olarak değiştirin.

  • Aşağıdaki örnekte gösterildiği gibi, mevcut geri çağırma işlevinizle gapi.auth2.grantOfflineAccess() yöntemini kullanın:

    <!-- Google+ Sign-in (old) -->
    <div class="g-signin"
      data-scope="https://www.googleapis.com/auth/plus.login"
      data-clientid="YOUR_CLIENT_ID"
      data-redirecturi="postmessage"
      data-accesstype="offline"
      data-callback="signInCallback">
    </div>
    

    // Google Sign-in (new)
    auth2 = gapi.auth2.init({
      client_id: 'YOUR_CLIENT_ID',
      scope: 'profile'
    });
    
    ...
    
    auth2.grantOfflineAccess().then(signInCallback);
    

Kullanıcının e-postasına da erişmeniz gerekiyorsa kapsam parametresine email ekleyin.