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