Переход со входа в Google+

Действия по минимизации влияния изменений области действия на пользователей

  1. Если вашему приложению требуется адрес электронной почты аутентифицированного пользователя и вы ранее использовали для этой цели profile.emails.read , используйте вместо него email .
  2. Получите одобрение для profile.emails.read с одобренным запросом на проверку. См. раздел Как отправить на проверку?
  3. Отзовите предыдущий токен пользователя в области, которую необходимо удалить, или полностью удалите доступ к приложению. Например, токен с доступом profile.emails.read должен быть отозван. Мы рекомендуем вам применить отзыв, пока ваши пользователи находятся в вашем приложении, чтобы вы могли немедленно получить согласие пользователя.
  4. Предложите пользователям повторно согласиться с новой областью действия, например email , без profile.emails.read .
  5. Удалите область, которая должна быть постепенно исключена из конфигурации экрана согласия OAuth API Google.

Изменения, которые необходимо внести для переноса вашего сайта с входа в Google+ на вход в Google, зависят от того, какой процесс входа в Google+ вы используете. Как правило, для миграции требуется обновить кнопку входа, запрошенные области и инструкции по получению информации профиля из Google.

При обновлении кнопки входа не ссылайтесь на G+ и не используйте красный цвет. Соответствуйте нашим обновленным рекомендациям по брендингу .

Большинство приложений для входа в G+ запрашивали некоторую комбинацию областей: plus.login , plus.me и plus.profile.emails.read . Вам необходимо переназначить области следующим образом:

Старый объем Новая область применения
plus.login profile
plus.me openid
plus.profile.emails.read email

Многие разработчики Google+ Sign-In использовали поток кода . Это означает, что приложения Android, iOS или JavaScript получают код OAuth от Google, а клиент отправляет этот код обратно на сервер вместе с защитой от подделки межсайтовых запросов. Затем сервер проверяет код и получает токены обновления и доступа для получения информации профиля пользователя из API people.get .

Теперь Google рекомендует вам запросить токен идентификатора и отправить этот токен идентификатора от вашего клиента на ваш сервер. Токены идентификатора имеют встроенную защиту от межсайтовой подделки, а также могут быть статически проверены на вашем сервере, что позволяет избежать дополнительного вызова API для получения информации профиля пользователя с серверов Google. Следуйте инструкциям для проверки токенов идентификатора на вашем сервере .

Если вы по-прежнему предпочитаете использовать поток кода для получения информации профиля, вы можете это сделать. Как только ваш сервер получит токен доступа, вам необходимо получить информацию о профиле пользователя от конечных точек userinfo , указанных в нашем документе Обнаружение входа в систему. Ответ API форматируется иначе, чем ответ профиля Google+, поэтому вам необходимо обновить синтаксический анализ до нового формата.

Перенос кнопки входа в формате HTML

Если вы включили кнопку входа в Google+ на свою страницу, присвоив элементу класс g-signin , внесите следующие изменения:

  • Когда вы указываете свой идентификатор клиента в теге <meta> , атрибуте data- или объекте параметров, измените строку clientid на client_id , как в следующем примере:

    <!-- 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">
    
  • Назначьте класс g-signin2 элементу кнопки входа вместо g-signin . Кроме того, укажите отдельные обратные вызовы для успешного и неудачного выполнения вместо одного обратного вызова, как в следующем примере:

    <!-- 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>
    
  • Вместо одного обработчика обратного вызова определите обработчики успеха и неудачи, как в следующем примере:

    // 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
    }
    
  • Эти изменения обновляют ваши области по умолчанию для profile email openid . Вы можете получить основную информацию профиля пользователя, такую ​​как имя, адрес электронной почты и URL-адрес изображения фотографии, следующим образом:

    // Google Sign-in (new)
    function onSignIn(googleUser) {
      let profile = googleUser.getBasicProfile();
      let fullName = profile.getName();
      let email = profile.getEmail();
      let imageUrl = profile.getImageUrl();
    }
    

Перенос динамически отображаемой кнопки входа

Если вы добавили кнопку входа в Google+ на свою страницу, вызвавgapi.signin.render gapi.signin.render() , внесите следующие изменения:

  • Когда вы указываете свой идентификатор клиента в теге <meta> , атрибуте data- или объекте параметров, измените строку clientid на client_id , как в следующем примере:

    <!-- 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">
    
  • Отрисовывайте кнопку входа с помощью gapi.signin2.render() а не с gapi.signin.render() , как в следующем примере:

    // Google+ Sign-in (old)
    gapi.signin.render('myButton', additionalParams);
    

    // Google Sign-in (new)
    gapi.signin2.render('myButton', additionalParams);
    
  • Вместо одного обработчика обратного вызова определите обработчики успеха и неудачи, как в следующем примере:

    // 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
    }
    

Эти изменения обновляют ваши области по умолчанию для profile email openid . Вы можете получить основную информацию профиля пользователя с помощью метода getBasicProfile() .

Перенос процесса входа, инициируемого JavaScript

Если вы инициировали процесс входа с помощью вызова gapi.auth.signIn() , когда пользователи нажимают кнопку входа, внесите следующие изменения:

  • Когда вы указываете свой идентификатор клиента в теге <meta> , атрибуте data- или объекте параметров, измените строку clientid на client_id , как в следующем примере:

    <!-- 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">
    
  • Используйтеgapi.auth2.attachClickHandler gapi.auth2.attachClickHandler() , чтобы запустить процесс входа при нажатии кнопки, как в следующем примере:

    // 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);
    
  • Вместо одного обработчика обратного вызова определите обработчики успеха и неудачи, как в следующем примере:

    // 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
    }
    

Эти изменения обновляют ваши области по умолчанию для profile email openid . Вы можете получить основную информацию профиля пользователя, вызвав метод getBasicProfile() .

Миграция гибридного серверного потока

Если вы использовали API JavaScript для получения одноразового кода авторизации для передачи на ваш сервер, внесите следующие изменения:

  • Измените область действия с https://www.googleapis.com/auth/plus.login на profile .

  • Используйте методgapi.auth2.grantOfflineAccess gapi.auth2.grantOfflineAccess() с существующей функцией обратного вызова, как в следующем примере:

    <!-- 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);
    

Если вам также нужен доступ к электронной почте пользователя, добавьте email в параметр области.