Kroki, które pomogą zminimalizować wpływ zmian zakresu na użytkowników
- Jeśli Twoja aplikacja wymaga adresu e-mail uwierzytelnionego użytkownika, a do tej pory używałeś do tego celu funkcji
profile.emails.read
, użyj zamiast niej funkcjiemail
. - Uzyskaj zatwierdzenie dla
profile.emails.read
z zatwierdzoną 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 należy cofnąć token z dostępem
profile.emails.read
. Zalecamy, aby cofnąć zgodę, gdy użytkownicy są w aplikacji, dzięki czemu możesz od razu uzyskać ich zgodę. - Poproś użytkowników o ponowne wyrażenie zgody na wykorzystanie danych w nowym zakresie, 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ść witrynę z logowania przez Google+ na logowanie przez Google, zależą od tego, którego procesu logowania przez Google+ używasz. Migracja wymaga zaktualizowania przycisku logowania, zakresów uprawnień i instrukcji dotyczących pobierania informacji o profilu z Google.
Podczas aktualizowania przycisku logowania nie odwołuj się do G+ ani nie używaj koloru czerwonego. być zgodne z naszych zaktualizowanymi wskazówkami dotyczącymi promowania marki;
Większość aplikacji wymagających logowania się w Google+ prosi o dostęp do następujących zakresów:
plus.login
, plus.me
i plus.profile.emails.read
. Musisz zmienić zakresy w ten sposób:
Stary zakres | Nowy zakres |
---|---|
plus.login |
profile |
plus.me |
openid |
plus.profile.emails.read |
email |
Wielu implementatorów funkcji Logowanie przez Google+ używało procesu 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 uzyskiwanie tokenów odświeżania i dostępu, aby pobierać informacje profilowe użytkownika z interfejsu API people.get
.
Google zaleca teraz, aby poprosić o token identyfikacyjny i przesłać go z klienta na serwer. Tokeny identyfikacyjne mają wbudowane zabezpieczenia przed fałszowaniem w wielu witrynach. Można je też weryfikować statycznie na serwerze, co pozwala uniknąć dodatkowego wywołania interfejsu API w celu uzyskania informacji o profilu użytkownika z serwerów Google. Wykonaj instrukcje weryfikowania tokenów tożsamości na serwerze.
Jeśli nadal wolisz używać kodu do uzyskiwania informacji o profilu, możesz to zrobić. Gdy Twój serwer otrzyma token dostępu, musisz uzyskać informacje o profilu użytkownika z punktów końcowych userinfo
określonych w naszym dokumencie Discovery. Odpowiedź interfejsu API jest sformatowana inaczej niż odpowiedź z profilu Google+, dlatego musisz zaktualizować parsowanie na potrzeby nowego formatu.
Przenoszenie przycisku logowania w formacie 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ąg znakówclientid
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">
Przypisz klasę
g-signin2
do elementu przycisku logowania zamiast klasyg-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ąg znakówclientid
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">
Wyświetlaj przycisk logowania z użyciem wartości
gapi.signin2.render()
zamiastgapi.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 elementu obsługi wywołania zwrotnego zdefiniuj elementy obsługi powodzenia i błędu, 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ą domyślne zakresy na profile email openid
. Podstawowe informacje o profilu użytkownika możesz uzyskać za pomocą metody getBasicProfile()
.
Przenoszenie procesu logowania inicjowanego przez JavaScript
Jeśli po kliknięciu przez użytkowników przycisku logowania rozpoczyna się proces logowania wywołaniem funkcji gapi.auth.signIn()
, wprowadź te zmiany:
Gdy podajesz identyfikator klienta w tagu
<meta>
, atrybuciedata-
lub obiekcie parametrów, zmień ciąg znakówclientid
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">
Aby rozpocząć proces logowania po naciśnięciu przycisku, użyj elementu
gapi.auth2.attachClickHandler()
, 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 wywołania zwrotnego zdefiniuj wywołania zwrotne w przypadku powodzenia i błędu, 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 procesu po stronie serwera
Jeśli do uzyskania jednorazowego kodu autoryzacji, który należy przekazać serwerowi, użyjesz interfejsu JavaScript API, wprowadź te zmiany:
Zmień zakres z
https://www.googleapis.com/auth/plus.login
naprofile
.Użyj metody
gapi.auth2.grantOfflineAccess()
z dotychczasową funkcją 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
.