Migracja z logowania przez Google+

Kroki, które pomogą zminimalizować wpływ zmian zakresu na użytkowników

  1. 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 funkcji email.
  2. Uzyskaj zatwierdzenie dla profile.emails.read z zatwierdzoną prośbą o weryfikację. Zapoznaj się z artykułem Jak przesłać prośbę o weryfikację?.
  3. 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ę.
  4. Poproś użytkowników o ponowne wyrażenie zgody na wykorzystanie danych w nowym zakresie, np. email, bez profile.emails.read.
  5. 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.meplus.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>, atrybucie data- lub obiekcie parametrów, zmień ciąg znaków clientid na client_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 klasy g-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>, atrybucie data- lub obiekcie parametrów, zmień ciąg znaków clientid na client_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() zamiast gapi.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>, atrybucie data- lub obiekcie parametrów, zmień ciąg znaków clientid na client_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 na profile.

  • 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.