Действия по минимизации влияния изменений области действия на пользователей
- Если вашему приложению требуется адрес электронной почты аутентифицированного пользователя и вы ранее использовали для этой цели
profile.emails.read
, используйте вместо негоemail
. - Получите одобрение для
profile.emails.read
с одобренным запросом на проверку. См. раздел Как отправить на проверку? - Отзовите предыдущий токен пользователя в области, которую необходимо удалить, или полностью удалите доступ к приложению. Например, токен с доступом
profile.emails.read
должен быть отозван. Мы рекомендуем вам применить отзыв, пока ваши пользователи находятся в вашем приложении, чтобы вы могли немедленно получить согласие пользователя. - Предложите пользователям повторно согласиться с новой областью действия, например
email
, безprofile.emails.read
. - Удалите область, которая должна быть постепенно исключена из конфигурации экрана согласия OAuth Google API.
Изменения, которые необходимо внести для переноса вашего сайта с входа в 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()
, внесите следующие изменения:
Когда вы указываете свой идентификатор клиента в теге
<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()
с существующей функцией обратного вызова, как в следующем примере:<!-- 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
в параметр области.