Jak 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 token poprzedniego użytkownika w zakresie, który ma zostać usunięty, 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 ma zostać wycofany, z konfiguracji ekranu akceptacji 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 uzyskują od Google kod OAuth, a klient wysyła ten kod z powrotem na serwer wraz z ochroną przed fałszowaniem żądań między witrynami. 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. Postępuj zgodnie z tymi instrukcjami, aby weryfikować tokeny identyfikacyjne 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 na stronie znajduje się przycisk Logowanie przez Google+, który został dodany przez przypisanie do elementu klasy g-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">
Przypisz klasę
g-signin2
do elementu przycisku logowania zamiast klasyg-signin
. Zamiast jednego wywołania zwrotnego określ osobne wywołania zwrotne na powodzenie i błąd, 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 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
. Aby uzyskać podstawowe informacje o profilu użytkownika, takie jak nazwa, adres e-mail i adres URL zdjęcia, wykonaj te czynności:// 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 na swojej stronie masz przycisk Logowanie przez Google+, który został wywołany przez funkcję 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
. Za pomocą metody getBasicProfile()
możesz pobrać podstawowe informacje z profilu użytkownika.
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 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
. Możesz pobrać podstawowe informacje z profilu użytkownika, 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 parametr zakresu email
.