Kroki pozwalające zminimalizować wpływ zmian zakresu na użytkowników
- Jeśli Twoja aplikacja wymaga adresu e-mail uwierzytelnionego użytkownika, a wcześniej używano do tego celu
profile.emails.read
, zamiast tego użyjemail
. - Aby uzyskać zatwierdzenie domeny
profile.emails.read
, prześlij prośbę o weryfikację. Zapoznaj się z artykułem Jak przesłać prośbę o weryfikację. - Unieważnij poprzedni token użytkownika do zakresu, który chcesz usunąć, lub całkowicie usuń dostęp do aplikacji. Na przykład token z dostępem
profile.emails.read
powinien zostać unieważniony. Zalecamy wycofanie zgody, gdy użytkownicy korzystają z aplikacji – wtedy od razu uzyskasz zgodę. - Poproś użytkowników o ponowne wyrażenie zgody na wykorzystanie danych w ramach nowego zakresu, np.
email
, bezprofile.emails.read
. - Usuń zakres, który chcesz wycofać z konfiguracji ekranu zgody OAuth interfejsów API Google.
Zmiany, które musisz wprowadzić, aby przenieść swoją witrynę z Logowania przez Google+ do Logowania przez Google, zależą od stosowanego procesu logowania przez Google+. Ogólnie rzecz biorąc, migracja wymaga zaktualizowania przycisku logowania, żądanych zakresów i instrukcji pobierania informacji o profilu z Google.
Gdy aktualizujesz przycisk logowania, nie odnosij się do Google+ ani nie używaj koloru czerwonego. Zadbaj o zgodność ze zaktualizowanymi wskazówkami dotyczącymi promowania marki.
Większość aplikacji do logowania przez Google+ wymagała kombinacji zakresów: plus.login
, plus.me
i plus.profile.emails.read
. Musisz zmapować zakresy w następujący sposób:
Stary zakres | Nowy zakres |
---|---|
plus.login |
profile |
plus.me |
openid |
plus.profile.emails.read |
email |
Wiele osób implementujących Logowanie przez Google+ korzystało z przepływu kodu. Oznacza to, że aplikacje na Androida, iOS lub JavaScript otrzymują kod OAuth od Google, a klient wysyła go z powrotem do serwera wraz z ochroną przed fałszowaniem żądań z innych witryn. Następnie serwer weryfikuje kod i uzyskuje tokeny odświeżania oraz tokeny dostępu umożliwiające pobieranie informacji o profilu użytkownika z interfejsu API people.get
.
Google zaleca teraz żądanie tokena identyfikatora i wysłanie go od klienta na Twój serwer. Tokeny identyfikatorów mają wbudowane zabezpieczenia przed fałszowaniem informacji w różnych witrynach i mogą być weryfikowane statycznie na serwerze, co pozwala uniknąć dodatkowego wywołania interfejsu API w celu pobrania informacji o profilu użytkownika z serwerów Google. Wykonaj instrukcje weryfikowania tokenów tożsamości na serwerze.
Jeśli nadal wolisz uzyskiwać informacje o profilu za pomocą procesu kodu, możesz to zrobić. Gdy serwer będzie już miał token dostępu, musisz uzyskać informacje o profilu użytkownika z punktów końcowych userinfo
określonych w dokumencie opisującym logowanie. Odpowiedź interfejsu API jest sformatowana inaczej niż odpowiedź profilu Google+, więc musisz zaktualizować ją do nowego formatu.
Migracja przycisku logowania HTML
Jeśli przycisk Logowanie przez Google+ został umieszczony na stronie przez przypisanie klasy g-signin
do elementu, wprowadź te zmiany:
Gdy podajesz identyfikator klienta, w tagu
<meta>
, atrybuciedata-
lub obiekcie parametrów zmień ciągclientid
naclient_id
, jak w tym przykładzie:<!-- 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">
Do elementu przycisku logowania przypisz klasę
g-signin2
zamiastg-signin
. Zamiast pojedynczego wywołania zwrotnego określ też osobne wywołania zwrotne powodzenia i niepowodzeń, jak w tym przykładzie:<!-- 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>
Zamiast pojedynczego modułu obsługi wywołania zwrotnego określ moduły obsługi powodzenia i niepowodzenia, jak w tym przykładzie:
// 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 }
Te zmiany zaktualizują zakresy domyślne na
profile email openid
. Podstawowe informacje profilowe użytkownika, takie jak imię i nazwisko, adres e-mail i adres URL zdjęcia, możesz uzyskać w ten sposób:// Google Sign-in (new) function onSignIn(googleUser) { let profile = googleUser.getBasicProfile(); let fullName = profile.getName(); let email = profile.getEmail(); let imageUrl = profile.getImageUrl(); }
Migracja dynamicznie renderowanego przycisku logowania
Jeśli umieścisz na swojej stronie przycisk Logowanie przez Google+, wywołując gapi.signin.render()
, wprowadź te zmiany:
Gdy podajesz identyfikator klienta, w tagu
<meta>
, atrybuciedata-
lub obiekcie parametrów zmień ciągclientid
naclient_id
, jak w tym przykładzie:<!-- 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">
Renderuj przycisk logowania za pomocą
gapi.signin2.render()
, a niegapi.signin.render()
, jak w tym przykładzie:// Google+ Sign-in (old) gapi.signin.render('myButton', additionalParams);
// Google Sign-in (new) gapi.signin2.render('myButton', additionalParams);
Zamiast pojedynczego modułu obsługi wywołania zwrotnego określ moduły obsługi powodzenia i niepowodzenia, jak w tym przykładzie:
// 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 }
Te zmiany zaktualizują zakresy domyślne na profile email openid
. Podstawowe informacje o profilu użytkownika możesz uzyskać za pomocą metody getBasicProfile()
.
Migracja procesu logowania inicjowanego przez JavaScript
Jeśli proces logowania został zainicjowany przez wywołanie metody gapi.auth.signIn()
, gdy użytkownik kliknie przycisk logowania, wprowadź te zmiany:
Gdy podajesz identyfikator klienta, w tagu
<meta>
, atrybuciedata-
lub obiekcie parametrów zmień ciągclientid
naclient_id
, jak w tym przykładzie:<!-- 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">
Użyj
gapi.auth2.attachClickHandler()
, aby rozpocząć proces logowania po naciśnięciu przycisku, jak w tym przykładzie:// 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);
Zamiast pojedynczego modułu obsługi wywołania zwrotnego określ moduły obsługi powodzenia i niepowodzenia, jak w tym przykładzie:
// 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 }
Te zmiany zaktualizują zakresy domyślne na profile email openid
. Podstawowe informacje o profilu użytkownika można uzyskać, wywołując metodę getBasicProfile()
.
Migracja hybrydowego przepływu po stronie serwera
Jeśli do uzyskania jednorazowego kodu autoryzacji, który należy przekazać do serwera za pomocą interfejsu JavaScript API, wprowadź te zmiany:
Zmień zakres z
https://www.googleapis.com/auth/plus.login
naprofile
.Użyj metody
gapi.auth2.grantOfflineAccess()
w dotychczasowej funkcji wywołania zwrotnego, jak w tym przykładzie:<!-- 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);
Jeśli potrzebujesz też dostępu do adresu e-mail użytkownika, dodaj do parametru zakresu email
.