Langkah-langkah untuk meminimalkan dampak perubahan cakupan terhadap pengguna
- Jika aplikasi Anda memerlukan alamat email pengguna yang diautentikasi, dan Anda sebelumnya telah menggunakan
profile.emails.read
untuk tujuan tersebut, gunakanemail
. - Mendapatkan persetujuan untuk
profile.emails.read
dengan permintaan verifikasi yang disetujui. Lihat Bagaimana cara mengirimkan verifikasi? - 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 terapkan pencabutan saat pengguna berada di aplikasi Anda sehingga Anda dapat segera mendapatkan izin pengguna. - Minta pengguna untuk memberikan izin ulang dengan cakupan baru, seperti
email
, tanpaprofile.emails.read
. - 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 ini memerlukan Anda untuk memperbarui tombol login, cakupan yang diminta, dan petunjuk cara mengambil informasi profil dari Google.
Saat memperbarui tombol login, jangan merujuk ke G+ atau menggunakan warna merah. Sesuaikan dengan pedoman branding yang diperbarui.
Sebagian besar aplikasi Login dengan G+ meminta beberapa kombinasi cakupan:
plus.login
, plus.me
, dan plus.profile.emails.read
. Anda perlu memetakan ulang cakupan sebagai berikut:
Cakupan lama | Cakupan baru |
---|---|
plus.login |
profile |
plus.me |
openid |
plus.profile.emails.read |
email |
Banyak pengimplementasi Google+ Sign-In menggunakan
alur kode. Artinya,
aplikasi Android, iOS, atau JavaScript mendapatkan kode OAuth dari Google, dan
klien mengirim kode tersebut kembali ke server, beserta perlindungan terhadap
pemalsuan permintaan lintas situs. Server kemudian memvalidasi kode dan memperoleh token refresh dan akses untuk mengambil informasi profil pengguna dari API people.get
.
Google kini merekomendasikan agar Anda meminta token ID dan mengirim token ID tersebut dari klien ke server Anda. Token ID memiliki perlindungan peniruan identitas lintas situs bawaan dan juga dapat diverifikasi secara statis di server Anda, sehingga menghindari panggilan API tambahan untuk mendapatkan informasi profil pengguna dari server Google. Ikuti petunjuk untuk memvalidasi token ID di server Anda.
Jika masih memilih untuk menggunakan alur kode untuk mendapatkan informasi profil,
Anda dapat melakukannya. Setelah server memiliki token akses, Anda harus
mendapatkan informasi profil pengguna
dari endpoint userinfo
yang ditentukan dalam dokumen Penemuan Login kami. Respons API
diformat secara berbeda dengan respons profil Google+, sehingga Anda
perlu memperbarui penguraian ke format baru.
Memigrasikan tombol login HTML
Jika Anda menyertakan tombol Login dengan Google+ di halaman dengan menetapkan class
g-signin
ke elemen, buat perubahan berikut:
Saat Anda menentukan client ID, baik dalam tag
<meta>
, atributdata-
, atau objek parameter, ubah stringclientid
menjadiclient_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, bukang-signin
. Selain itu, tentukan callback keberhasilan dan kegagalan yang terpisah, bukan satu callback, 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>
Daripada satu pengendali callback, tentukan pengendali keberhasilan dan kegagalan, 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 akan 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>
, atributdata-
, atau objek parameter, ubah stringclientid
menjadiclient_id
, seperti pada 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()
, bukangapi.signin.render()
, seperti dalam contoh berikut:// Google+ Sign-in (old) gapi.signin.render('myButton', additionalParams);
// Google Sign-in (new) gapi.signin2.render('myButton', additionalParams);
Daripada satu pengendali callback, tentukan pengendali keberhasilan dan kegagalan, 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 mengupdate cakupan default Anda ke profile email openid
. Anda dapat
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>
, atributdata-
, atau objek parameter, ubah stringclientid
menjadiclient_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 dalam 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);
Daripada satu pengendali callback, tentukan pengendali keberhasilan dan kegagalan, 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 akan 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 akan Anda teruskan ke server, lakukan perubahan berikut:
Ubah cakupan dari
https://www.googleapis.com/auth/plus.login
menjadiprofile
.Gunakan metode
gapi.auth2.grantOfflineAccess()
dengan fungsi callback yang 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.