Bermigrasi dari login dengan Google+

Langkah-langkah untuk meminimalkan dampak perubahan cakupan pada pengguna

  1. Jika aplikasi Anda memerlukan alamat email pengguna yang diautentikasi, dan Anda sebelumnya telah menggunakan profile.emails.read untuk tujuan tersebut, gunakan email sebagai gantinya.
  2. Dapatkan persetujuan untuk profile.emails.read dengan permintaan verifikasi yang disetujui. Lihat Bagaimana cara mengirimkan verifikasi?
  3. Cabut token pengguna sebelumnya ke cakupan yang akan dihapus atau hapus akses ke aplikasi sepenuhnya. Misalnya, token dengan akses profile.emails.read harus dicabut. Sebaiknya Anda menerapkan pencabutan izin saat pengguna berada dalam permohonan agar Anda bisa segera mendapatkan izin pengguna.
  4. Minta pengguna Anda untuk memberikan izin ulang dengan cakupan baru, seperti email, tanpa profile.emails.read.
  5. Hapus cakupan yang akan dihentikan secara bertahap dari konfigurasi layar izin OAuth Google API Anda.

Perubahan yang harus Anda buat untuk memigrasikan situs dari Login dengan Google+ ke Login dengan Google bergantung pada alur Login dengan Google+ yang Anda gunakan. Umumnya, migrasi mengharuskan Anda memperbarui tombol login, cakupan yang diminta, dan petunjuk tentang cara mengambil informasi profil dari Google.

Saat Anda memperbarui tombol login, jangan merujuk ke G+ atau menggunakan warna merah. Sesuai dengan pedoman branding terbaru kami.

Sebagian besar aplikasi Login dengan G+ meminta beberapa kombinasi cakupan: plus.login, plus.me, dan plus.profile.emails.read. Anda perlu memetakan ulang cakupan Anda sebagai berikut:

Cakupan lama Cakupan baru
plus.login profile
plus.me openid
plus.profile.emails.read email

Banyak pengimplementasi Login dengan Google+ menggunakan alur kode. Artinya, aplikasi Android, iOS, atau JavaScript mendapatkan kode OAuth dari Google, dan klien mengirimkan kode tersebut kembali ke server, bersama dengan perlindungan pemalsuan permintaan lintas situs. Selanjutnya, server memvalidasi kode dan memperoleh token refresh dan akses untuk menarik informasi profil pengguna dari people.get API.

Google kini merekomendasikan agar Anda meminta token ID dan mengirim token ID tersebut dari klien ke server Anda. Token ID memiliki perlindungan pemalsuan lintas situs bawaan dan juga dapat diverifikasi secara statis di server Anda, yang menghindari panggilan API tambahan untuk mendapatkan informasi profil pengguna dari server Google. Ikuti petunjuk untuk memvalidasi token ID di server.

Jika masih memilih untuk menggunakan alur kode untuk mendapatkan informasi profil, Anda dapat melakukannya. Setelah server Anda memiliki token akses, Anda perlu mendapatkan informasi profil pengguna dari endpoint userinfo yang ditentukan dalam Dokumen penemuan Login kami. Respons API diformat berbeda dari respons profil Google+, sehingga Anda perlu memperbarui penguraian ke format baru.

Tombol migrasikan login HTML

Jika Anda menyertakan tombol Login dengan Google+ di halaman berdasarkan tugas kelas g-signin ke elemen, buat perubahan berikut:

  • Saat Anda menentukan client ID, baik dalam tag <meta>, atribut data-, atau objek parameter, ubah string clientid menjadi client_id, seperti dalam contoh berikut:

    <!-- 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">
    
  • Tetapkan class g-signin2 ke elemen tombol login, bukan g-signin. Selain itu, tentukan callback berhasil dan gagal terpisah, bukan callback tunggal, seperti dalam contoh berikut:

    <!-- 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>
    
  • Sebagai ganti pengendali callback tunggal, tentukan pengendali yang berhasil dan gagal, seperti dalam contoh berikut:

    // 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
    }
    
  • Perubahan ini memperbarui cakupan default Anda menjadi profile email openid. Anda bisa mendapatkan informasi profil dasar pengguna, seperti nama, email, dan URL gambar foto, sebagai berikut:

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

Memigrasikan tombol login yang dirender secara dinamis

Jika Anda menyertakan tombol Login dengan Google+ di halaman dengan memanggil gapi.signin.render(), buat perubahan berikut:

  • Saat Anda menentukan client ID, baik dalam tag <meta>, atribut data-, atau objek parameter, ubah string clientid menjadi client_id, seperti dalam contoh berikut:

    <!-- 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">
    
  • Render tombol login dengan gapi.signin2.render(), bukan gapi.signin.render(), seperti dalam contoh berikut:

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

    // Google Sign-in (new)
    gapi.signin2.render('myButton', additionalParams);
    
  • Sebagai ganti pengendali callback tunggal, tentukan pengendali yang berhasil dan gagal, seperti dalam contoh berikut:

    // 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
    }
    

Perubahan ini memperbarui cakupan default Anda menjadi profile email openid. Anda bisa mendapatkan informasi profil dasar pengguna dengan metode getBasicProfile().

Memigrasikan alur login yang dimulai JavaScript

Jika Anda memulai alur login dengan panggilan ke gapi.auth.signIn() saat pengguna mengklik tombol login, buat perubahan berikut:

  • Saat Anda menentukan client ID, baik dalam tag <meta>, atribut data-, atau objek parameter, ubah string clientid menjadi client_id, seperti dalam contoh berikut:

    <!-- 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">
    
  • Gunakan gapi.auth2.attachClickHandler() untuk memulai alur login saat tombol ditekan, seperti pada contoh berikut:

    // 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);
    
  • Sebagai ganti pengendali callback tunggal, tentukan pengendali yang berhasil dan gagal, seperti dalam contoh berikut:

    // 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
    }
    

Perubahan ini memperbarui cakupan default Anda menjadi profile email openid. Anda bisa mendapatkan informasi profil dasar pengguna dengan panggilan ke metode getBasicProfile().

Memigrasikan alur sisi server hybrid

Jika Anda menggunakan JavaScript API untuk mendapatkan kode otorisasi satu kali yang dapat diteruskan ke server, lakukan perubahan berikut:

  • Ubah cakupan dari https://www.googleapis.com/auth/plus.login menjadi profile.

  • Gunakan metode gapi.auth2.grantOfflineAccess() dengan fungsi callback yang sudah ada, seperti dalam contoh berikut:

    <!-- 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);
    

Jika Anda juga memerlukan akses ke email pengguna, tambahkan email ke parameter cakupan.