В этом руководстве обсуждается внедрение API-интерфейсов FedCM в библиотеку платформы входа в Google. Темы включают временную шкалу и следующие шаги для обратно совместимого обновления библиотеки, как провести оценку воздействия и убедиться, что вход пользователя в систему продолжает работать должным образом, а также, при необходимости, инструкции по обновлению вашего веб-приложения. Также описаны варианты управления переходным периодом и способы получения помощи .
Статус библиотеки
Любым новым веб-приложениям запрещено использовать устаревшую библиотеку платформы входа в Google, а приложения, использующие эту библиотеку, могут продолжать использовать ее до дальнейшего уведомления. Окончательная дата закрытия (закрытия) библиотеки не установлена. Дополнительную информацию см. в разделе Прекращение поддержки и прекращение поддержки .
Обновление с обратной совместимостью добавляет API-интерфейсы FedCM в библиотеку входа в Google. Хотя большинство изменений происходят плавно, обновление вносит изменения в пользовательские запросы , политику разрешений iframe и политику безопасности контента (CSP). Эти изменения могут повлиять на ваше веб-приложение и потребовать внесения изменений в код приложения и конфигурацию сайта.
В течение переходного периода параметр конфигурации определяет, будут ли использоваться API-интерфейсы FedCM при входе пользователя.
После переходного периода API-интерфейсы FedCM станут обязательными для всех веб-приложений, использующих библиотеку входа в систему Google.
Хронология
Последнее обновление: сентябрь 2024 г.
Ниже приведены даты и изменения, влияющие на поведение пользователя при входе в систему:
- Март 2023 г. Прекращение поддержки библиотеки платформы входа в Google.
- Июль 2024 г. Начинается переходный период , и добавляется поддержка библиотеки платформы входа Google для API FedCM. По умолчанию Google контролирует процент запросов на вход пользователей с помощью FedCM в это время. Веб-приложения могут явно переопределить это поведение с помощью параметра
use_fedcm
. - Март 2025 г. Обязательное принятие API-интерфейсов FedCM библиотекой платформы входа Google, после чего параметр
use_fedcm
игнорируется, и все запросы на вход пользователей используют FedCM.
Следующие шаги
Есть три варианта, которым вы можете следовать:
- Проведите оценку воздействия и при необходимости обновите свое веб-приложение. Этот подход оценивает, используются ли функции, требующие изменений в вашем веб-приложении. Инструкции приведены в следующем разделе данного руководства.
- Перейдите в библиотеку Google Identity Services (GIS). Настоятельно рекомендуется перейти на последнюю и поддерживаемую библиотеку входа. Сделайте это, следуя этим инструкциям .
- Ничего не делайте. Ваше веб-приложение будет автоматически обновлено, когда библиотека входа Google перейдет на API FedCM для входа пользователей. Это наименьшая работа, но существует некоторый риск того, что пользователи не смогут войти в ваше веб-приложение.
Проведите оценку воздействия
Следуйте этим инструкциям, чтобы определить, можно ли беспрепятственно обновлять ваше веб-приложение с помощью обратно совместимого обновления или необходимы изменения, чтобы пользователи не могли войти в систему, когда библиотека платформы входа Google полностью принимает API-интерфейсы FedCM.
Настраивать
API-интерфейсы браузера и последняя версия библиотеки платформы входа Google необходимы для использования FedCM во время входа пользователя.
Прежде чем идти дальше:
- Обновите Chrome для ПК до последней версии. Chrome для Android требует версии M128 или более поздней, и его нельзя протестировать с использованием более ранних версий.
Откройте
chrome://flags
и установите эти значения для следующих функций:- #fedcm-authz включено
- #tracking-protection-3pcd Включено
- # Third-party-cookie-deprecation-trial отключено
- #tpcd-metadata-grants отключено
- #tpcd-heuristics-grants отключено
и перезапустите Chrome.
Установите для
use_fedcm
значениеtrue
при инициализации библиотеки платформы входа в Google в вашем веб-приложении. Обычно инициализация выглядит так:-
gapi.client.init({use_fedcm: true})
или -
gapi.auth2.init({use_fedcm: true})
или -
gapi.auth2.authorize({use_fedcm: true})
.
-
Недействительные кэшированные версии библиотеки платформы входа в Google. Обычно этот шаг не нужен, поскольку последняя версия библиотеки загружается напрямую в браузер путем включения
api.js
,client.js
илиplatform.js
в тег<script src>
(запрос может использовать любое из этих имен пакетов для библиотека).Подтвердите настройки OAuth для вашего идентификатора клиента OAuth:
- Откройте страницу «Учетные данные» Google API Console
Убедитесь, что URI вашего веб-сайта включен в авторизованные источники JavaScript . URI включает только схему и полное имя хоста. Например,
https://www.example.com
.При желании учетные данные могут быть возвращены с помощью перенаправления на конечную точку, которую вы размещаете, а не через обратный вызов JavaScript. В этом случае убедитесь, что ваши URI перенаправления включены в список «Разрешенные URI перенаправления» . URI перенаправления включают схему, полное имя хоста и путь и должны соответствовать правилам проверки URI перенаправления . Например,
https://www.example.com/auth-receiver
.
Тестирование
После выполнения инструкций в настройке:
- Закройте все существующие окна Chrome в режиме инкогнито и откройте новое окно в режиме инкогнито. При этом весь кэшированный контент или файлы cookie будут удалены.
- Загрузите страницу входа пользователя и попытайтесь войти.
Следуйте инструкциям в этих разделах данного руководства, чтобы выявить и устранить известные проблемы:
Найдите в консоли любые ошибки или предупреждения, связанные с библиотекой входа в Google.
Повторяйте этот процесс до тех пор, пока не исчезнут ошибки и вы не сможете успешно войти в систему. Вы можете подтвердить успешный вход, подтвердив, что
BasicProfile.getEmail()
возвращает ваш адрес электронной почты и чтоGoogleUser.isSignedIn()
имеетTrue
.
Найдите запрос библиотеки входа в Google.
Проверьте, необходимы ли изменения в политике разрешений и политике безопасности контента , проверив запрос библиотеки платформы входа в Google. Для этого найдите запрос, используя имя и происхождение библиотеки:
- В Chrome откройте панель DevTools Network и перезагрузите страницу.
- Используйте значения в столбцах «Домен» и «Имя» , чтобы найти запрос библиотеки:
- Домен —
apis.google.com
и - Имя —
api.js
,client.js
илиplatform.js
. Конкретное значение имени зависит от пакета библиотеки, запрошенного документом.
- Домен —
Например, отфильтруйте apis.google.com
в столбце «Домен» и platform.js
в столбце «Имя» .
Проверьте политику разрешений iframe
Ваш сайт может использовать библиотеку платформы входа в систему Google внутри iframe с разными источниками. Если да, то необходимо обновление.
Выполнив инструкции по запросу «Найти библиотеку входа в Google» , выберите запрос библиотеки входа в Google на панели «Сеть DevTools» и найдите заголовок Sec-Fetch-Site
в разделе «Заголовки запроса» на вкладке «Заголовки» . Если значение заголовка:
-
same-site
илиsame-origin
, тогда политики перекрестного происхождения не применяются, и никаких изменений не требуется. - изменения
cross-origin
могут потребоваться, если используется iframe.
Чтобы подтвердить наличие iframe:
- Выберите панель «Элементы» в Chrome DevTools и
- Используйте Ctrl-F, чтобы найти iframe в документе.
Если обнаружен iframe, проверьте документ на наличие вызовов функцийgapi.auth2 или директив script src
, которые загружают библиотеку входа в Google в iframe. Если это так:
- Добавьте политику
allow="identity-credentials-get"
в родительский iframe.
Повторите этот процесс для каждого iframe в документе. iframes могут быть вложенными, поэтому обязательно добавьте директивуallow ко всем окружающим родительским iframe.
Проверьте политику безопасности контента
Если на вашем сайте используется политика безопасности контента, вам может потребоваться обновить CSP, чтобы разрешить использование библиотеки входа в систему Google.
Выполнив инструкции по запросу «Найти библиотеку входа в Google» , выберите запрос библиотеки входа в Google на панели «Сеть» DevTools и найдите заголовок Content-Security-Policy
в разделе «Заголовки ответов» на вкладке «Заголовки» .
Если заголовок не найден, никаких изменений не требуется. В противном случае проверьте, определены ли какие-либо из этих директив CSP в заголовке CSP, и обновите их:
Добавление
https://apis.google.com/js/
,https://accounts.google.com/gsi/
иhttps://acounts.google.com/o/fedcm/
в любойconnect-src
,default-src
или директивыframe-src
.Добавление
https://apis.google.com/js/bundle-name.js
в директивуscript-src
. Заменитеbundle-name.js
наapi.js
,client.js
илиplatform.js
в зависимости от того, какой пакет библиотеки запрашивает документ.
Проверьте изменения подсказок пользователя
Существуют некоторые различия в поведении приглашений пользователя. FedCM добавляет модальное диалоговое окно, отображаемое браузером, и обновляет требования к активации пользователя.
Модальный диалог
Проверьте макет вашего сайта, чтобы убедиться, что основной контент может быть безопасно наложен и временно скрыт модальным диалогом браузера. Если это не так, возможно, вам придется изменить макет или положение некоторых элементов вашего веб-сайта.
Активация пользователя
FedCM включает обновленные требования к активации пользователей. Нажатие кнопки или переход по ссылке — это примеры жестов пользователя, которые позволяют сторонним источникам отправлять сетевые запросы или сохранять данные. При использовании FedCM браузер запрашивает согласие пользователя, когда:
- пользователь сначала входит в веб-приложение, используя новый экземпляр браузера, или
- Вызывается
GoogleAuth.signIn
.
Сегодня, если пользователь уже входил на ваш веб-сайт ранее, вы можете получить информацию для входа пользователя при инициализации библиотеки входа в Google с gapi.auth2.init
без дальнейшего взаимодействия с пользователем. Это больше невозможно, если пользователь хотя бы один раз не прошел процедуру входа в систему FedCM.
Если вы выберете FedCM и вызовете GoogleAuth.signIn
, то в следующий раз, когда тот же пользователь посетит ваш веб-сайт, gapi.auth2.init
сможет получить информацию для входа пользователя во время инициализации без взаимодействия с пользователем.
Распространенные случаи использования
Документация разработчика библиотеки входа в Google включает руководства и примеры кода для распространенных случаев использования. В этом разделе обсуждается, как FedCM влияет на их поведение.
Интеграция входа в Google в ваше веб-приложение
В этой демонстрации элемент
<div>
и класс отображают кнопку, а для уже вошедших в систему пользователей событиеonload
страницы возвращает учетные данные пользователя. Для входа в систему и установления нового сеанса требуется взаимодействие с пользователем.Инициализация библиотеки выполняется классом
g-signin2
gapi.load
который вызываетgapi.loadgapi.auth2.init
.Жест пользователя, событие
onclick
элемента<div>
, вызываетauth2.signIn
во время входа илиauth2.signOut
при выходе.Создание собственной кнопки входа в Google
В первой демонстрации настраиваемые атрибуты используются для управления внешним видом кнопки входа, а для уже вошедших в систему пользователей событие
onload
страницы возвращает учетные данные пользователя. Для входа в систему и установления нового сеанса требуется взаимодействие с пользователем.Инициализация библиотеки выполняется через событие
onload
библиотекиplatform.js
, а кнопка отображается с помощьюgapi.signin2.render
.Жест пользователя, нажимающий кнопку входа, вызывает
auth2.signIn
.Во второй демонстрации элемент
<div>
, стили CSS и пользовательское изображение используются для управления внешним видом кнопки входа. Для входа в систему и установления нового сеанса требуется взаимодействие с пользователем.Инициализация библиотеки выполняется при загрузке документа с помощью функции запуска
gapi.load
которая вызываетgapi.load,gapi.auth2.init
gapi.auth2.attachClickHandler
.Жест пользователя, событие
onclick
элемента<div>
, вызываетauth2.signIn
с использованиемauth2.attachClickHandler
во время входа илиauth2.signOut
при выходе.Мониторинг состояния сеанса пользователя
В этой демонстрации нажатие кнопки используется для входа и выхода пользователя. Для входа в систему и установления нового сеанса требуется взаимодействие с пользователем.
Инициализация библиотеки выполняется путем прямого
gapi.load
,gapi.auth2.init
gapi.auth2.attachClickHandler()
после загрузкиplatform.js
с помощьюscript src
.Жест пользователя, событие
onclick
элемента<div>
, вызываетauth2.signIn
с использованиемauth2.attachClickHandler
во время входа илиauth2.signOut
при выходе.Запрос дополнительных разрешений
В этой демонстрации нажатие кнопки используется для запроса дополнительных областей OAuth 2.0, получения нового токена доступа, а для уже вошедших в систему пользователей событие
onload
страницы возвращает учетные данные пользователя. Для входа в систему и установления нового сеанса требуется взаимодействие с пользователем.Инициализация библиотеки выполняется событием
onload
для библиотекиplatform.js
посредствомgapi.signin2.render
.Жест пользователя, нажав на элемент
<button>
, запускает запрос дополнительных областей OAuth 2.0 с использованиемgoogleUser.grant
илиauth2.signOut
при выходе.Интеграция входа в Google с использованием прослушивателей
В этой демонстрации для уже вошедших в систему пользователей событие
onload
страницы возвращает учетные данные пользователя. Для входа в систему и установления нового сеанса требуется взаимодействие с пользователем.Инициализация библиотеки выполняется при загрузке документа с помощью функции запуска
gapi.load
которая вызываетgapi.load,gapi.auth2.init
gapi.auth2.attachClickHandler
. Затемauth2.isSignedIn.listen
иauth2.currentUser.listen
используются для настройки уведомления об изменениях состояния сеанса. Наконец,auth2.SignIn
вызывается для возврата учетных данных для вошедших в систему пользователей.Жест пользователя, событие
onclick
элемента<div>
, вызываетauth2.signIn
с использованиемauth2.attachClickHandler
во время входа илиauth2.signOut
при выходе.Вход в Google для серверных приложений
В этой демонстрации жест пользователя используется для запроса кода аутентификации OAuth 2.0, а обратный вызов JS выполняет вызов AJAX для отправки ответа на внутренний сервер для проверки.
Инициализация библиотеки выполняется с помощью события
onload
для библиотекиplatform.js
, которая использует функцию запуска дляgapi.load
gapi.auth2.init
.Жест пользователя, щелкающий элемент
<button>
, запускает запрос кода авторизации путем вызоваauth2.grantOfflineAccess
.FedCM требует согласия для каждого экземпляра браузера, даже если пользователи Android уже вошли в систему, необходимо единоразовое согласие.
Управляйте переходным периодом
В течение переходного периода определенный процент пользователей, вошедших в систему, может использовать FedCM, точный процент может варьироваться и может меняться со временем. По умолчанию Google контролирует, сколько запросов на вход используют FedCM, но вы можете согласиться или отказаться от использования FedCM в течение переходного периода. В конце переходного периода FedCM становится обязательным и используется для всех запросов на вход.
Выбор согласия отправляет пользователя через процесс входа в систему FedCM, а выбор отказа отправляет пользователей через существующий процесс входа. Такое поведение контролируется с помощью параметра use_fedcm
.
Подписаться
Может быть полезно контролировать, используют ли все или некоторые попытки входа на ваш сайт API-интерфейсы FedCM. Для этого установите для use_fedcm
значение true
при инициализации библиотеки платформы. В этом случае запрос на вход пользователя использует API FedCM.
Уклоняться
В течение переходного периода определенный процент попыток входа пользователей на ваш сайт будет по умолчанию использовать API FedCM. Если для внесения изменений в ваше приложение требуется больше времени, вы можете временно отказаться от использования API FedCM. Для этого при инициализации библиотеки платформы установите для use_fedcm
значение false
. В этом случае запрос на вход пользователя не будет использовать API FedCM.
После обязательного принятия любые настройки use_fedcm
игнорируются библиотекой платформы входа в Google.
Получить помощь
Ищите или задавайте вопросы на StackOverflow, используя тег google-signin .
,В этом руководстве обсуждается внедрение API-интерфейсов FedCM в библиотеку платформы входа в Google. Темы включают временную шкалу и следующие шаги для обратно совместимого обновления библиотеки, как провести оценку воздействия и убедиться, что вход пользователя в систему продолжает работать должным образом, а также, при необходимости, инструкции по обновлению вашего веб-приложения. Также описаны варианты управления переходным периодом и способы получения помощи .
Статус библиотеки
Любым новым веб-приложениям запрещено использовать устаревшую библиотеку платформы входа в Google, а приложения, использующие эту библиотеку, могут продолжать использовать ее до дальнейшего уведомления. Окончательная дата закрытия (закрытия) библиотеки не установлена. Дополнительную информацию см. в разделе Прекращение поддержки и прекращение поддержки .
Обновление с обратной совместимостью добавляет API-интерфейсы FedCM в библиотеку входа в Google. Хотя большинство изменений происходят плавно, обновление вносит изменения в пользовательские запросы , политику разрешений iframe и политику безопасности контента (CSP). Эти изменения могут повлиять на ваше веб-приложение и потребовать внесения изменений в код приложения и конфигурацию сайта.
В течение переходного периода параметр конфигурации определяет, будут ли использоваться API-интерфейсы FedCM при входе пользователя.
После переходного периода API-интерфейсы FedCM станут обязательными для всех веб-приложений, использующих библиотеку входа в систему Google.
Хронология
Последнее обновление: сентябрь 2024 г.
Ниже приведены даты и изменения, влияющие на поведение пользователя при входе в систему:
- Март 2023 г. Прекращение поддержки библиотеки платформы входа в Google.
- Июль 2024 г. Начинается переходный период , и добавляется поддержка библиотеки платформы входа Google для API FedCM. По умолчанию Google контролирует процент запросов на вход пользователей с помощью FedCM в это время. Веб-приложения могут явно переопределить это поведение с помощью параметра
use_fedcm
. - Март 2025 г. Обязательное принятие API-интерфейсов FedCM библиотекой платформы входа Google, после чего параметр
use_fedcm
игнорируется, и все запросы на вход пользователей используют FedCM.
Следующие шаги
Есть три варианта, которым вы можете следовать:
- Проведите оценку воздействия и при необходимости обновите свое веб-приложение. Этот подход оценивает, используются ли функции, требующие изменений в вашем веб-приложении. Инструкции приведены в следующем разделе данного руководства.
- Перейдите в библиотеку Google Identity Services (GIS). Настоятельно рекомендуется перейти на последнюю и поддерживаемую библиотеку входа. Сделайте это, следуя этим инструкциям .
- Ничего не делайте. Ваше веб-приложение будет автоматически обновлено, когда библиотека входа Google перейдет на API FedCM для входа пользователей. Это наименьшая работа, но существует некоторый риск того, что пользователи не смогут войти в ваше веб-приложение.
Проведите оценку воздействия
Следуйте этим инструкциям, чтобы определить, можно ли беспрепятственно обновлять ваше веб-приложение с помощью обратно совместимого обновления или необходимы изменения, чтобы пользователи не могли войти в систему, когда библиотека платформы входа Google полностью принимает API-интерфейсы FedCM.
Настраивать
API браузера и последняя версия библиотеки платформы входа Google необходимы для использования FedCM во время входа пользователя.
Прежде чем идти дальше:
- Обновите Chrome для ПК до последней версии. Chrome для Android требует версии M128 или более поздней, и его нельзя протестировать с использованием более ранних версий.
Откройте
chrome://flags
и установите эти значения для следующих функций:- #fedcm-authz включено
- #tracking-protection-3pcd Включено
- # Third-party-cookie-deprecation-trial отключено
- #tpcd-metadata-grants отключено
- #tpcd-heuristics-grants отключено
и перезапустите Chrome.
Установите для
use_fedcm
значениеtrue
при инициализации библиотеки платформы входа в Google в вашем веб-приложении. Обычно инициализация выглядит так:-
gapi.client.init({use_fedcm: true})
или -
gapi.auth2.init({use_fedcm: true})
или -
gapi.auth2.authorize({use_fedcm: true})
.
-
Недействительные кэшированные версии библиотеки платформы входа в Google. Обычно этот шаг не нужен, поскольку последняя версия библиотеки загружается напрямую в браузер путем включения
api.js
,client.js
илиplatform.js
в тег<script src>
(запрос может использовать любое из этих имен пакетов для библиотека).Подтвердите настройки OAuth для вашего идентификатора клиента OAuth:
- Откройте страницу «Учетные данные» Google API Console
Убедитесь, что URI вашего веб-сайта включен в авторизованные источники JavaScript . URI включает только схему и полное имя хоста. Например,
https://www.example.com
.При желании учетные данные могут быть возвращены с помощью перенаправления на конечную точку, которую вы размещаете, а не через обратный вызов JavaScript. В этом случае убедитесь, что ваши URI перенаправления включены в список «Разрешенные URI перенаправления» . URI перенаправления включают схему, полное имя хоста и путь и должны соответствовать правилам проверки URI перенаправления . Например,
https://www.example.com/auth-receiver
.
Тестирование
После выполнения инструкций в настройке:
- Закройте все существующие окна Chrome в режиме инкогнито и откройте новое окно в режиме инкогнито. При этом весь кэшированный контент или файлы cookie будут удалены.
- Загрузите страницу входа пользователя и попытайтесь войти.
Следуйте инструкциям в этих разделах данного руководства, чтобы выявить и устранить известные проблемы:
Найдите в консоли любые ошибки или предупреждения, связанные с библиотекой входа в Google.
Повторяйте этот процесс до тех пор, пока не исчезнут ошибки и вы не сможете успешно войти в систему. Вы можете подтвердить успешный вход, подтвердив, что
BasicProfile.getEmail()
возвращает ваш адрес электронной почты и чтоGoogleUser.isSignedIn()
имеетTrue
.
Найдите запрос библиотеки входа в Google.
Проверьте, необходимы ли изменения в политике разрешений и политике безопасности контента , проверив запрос библиотеки платформы входа в Google. Для этого найдите запрос, используя имя и происхождение библиотеки:
- В Chrome откройте панель DevTools Network и перезагрузите страницу.
- Используйте значения в столбцах «Домен» и «Имя» , чтобы найти запрос библиотеки:
- Домен —
apis.google.com
и - Имя —
api.js
,client.js
илиplatform.js
. Конкретное значение имени зависит от пакета библиотеки, запрошенного документом.
- Домен —
Например, отфильтруйте apis.google.com
в столбце «Домен» и platform.js
в столбце «Имя» .
Проверьте политику разрешений iframe
Ваш сайт может использовать библиотеку платформы входа в систему Google внутри iframe с разными источниками. Если да, то необходимо обновление.
Выполнив инструкции по запросу «Найти библиотеку входа в Google» , выберите запрос библиотеки входа в Google на панели «Сеть DevTools» и найдите заголовок Sec-Fetch-Site
в разделе «Заголовки запроса» на вкладке «Заголовки» . Если значение заголовка:
-
same-site
илиsame-origin
, тогда политики перекрестного происхождения не применяются, и никаких изменений не требуется. - изменения
cross-origin
могут потребоваться, если используется iframe.
Чтобы подтвердить наличие iframe:
- Выберите панель «Элементы» в Chrome DevTools и
- Используйте Ctrl-F, чтобы найти iframe в документе.
Если обнаружен iframe, проверьте документ на наличие вызовов функцийgapi.auth2 или директив script src
, которые загружают библиотеку входа в Google в iframe. Если это так:
- Добавьте политику
allow="identity-credentials-get"
в родительский iframe.
Повторите этот процесс для каждого iframe в документе. iframes могут быть вложенными, поэтому обязательно добавьте директивуallow ко всем окружающим родительским iframe.
Проверьте политику безопасности контента
Если на вашем сайте используется политика безопасности контента, вам может потребоваться обновить CSP, чтобы разрешить использование библиотеки входа в систему Google.
Выполнив инструкции по запросу «Найти библиотеку входа в Google» , выберите запрос библиотеки входа в Google на панели «Сеть» DevTools и найдите заголовок Content-Security-Policy
в разделе «Заголовки ответов» на вкладке «Заголовки» .
Если заголовок не найден, никаких изменений не требуется. В противном случае проверьте, определены ли какие-либо из этих директив CSP в заголовке CSP, и обновите их:
Добавление
https://apis.google.com/js/
,https://accounts.google.com/gsi/
иhttps://acounts.google.com/o/fedcm/
в любойconnect-src
,default-src
или директивыframe-src
.Добавление
https://apis.google.com/js/bundle-name.js
в директивуscript-src
. Заменитеbundle-name.js
наapi.js
,client.js
илиplatform.js
в зависимости от того, какой пакет библиотеки запрашивает документ.
Проверьте изменения приглашений пользователя
Существуют некоторые различия в поведении приглашений пользователя. FedCM добавляет модальное диалоговое окно, отображаемое браузером, и обновляет требования к активации пользователя.
Модальный диалог
Проверьте макет вашего сайта, чтобы убедиться, что основной контент может быть безопасно наложен и временно скрыт модальным диалогом браузера. Если это не так, возможно, вам придется изменить макет или положение некоторых элементов вашего веб-сайта.
Активация пользователя
FedCM включает обновленные требования к активации пользователей. Нажатие кнопки или переход по ссылке — это примеры жестов пользователя, которые позволяют сторонним источникам отправлять сетевые запросы или сохранять данные. При использовании FedCM браузер запрашивает согласие пользователя, когда:
- пользователь сначала входит в веб-приложение, используя новый экземпляр браузера, или
- Вызывается
GoogleAuth.signIn
.
Сегодня, если пользователь уже входил на ваш веб-сайт ранее, вы можете получить информацию для входа пользователя при инициализации библиотеки входа в Google с gapi.auth2.init
без дальнейшего взаимодействия с пользователем. Это больше невозможно, если пользователь хотя бы один раз не прошел процедуру входа в систему FedCM.
Если вы выберете FedCM и вызовете GoogleAuth.signIn
, то в следующий раз, когда тот же пользователь посетит ваш веб-сайт, gapi.auth2.init
сможет получить информацию для входа пользователя во время инициализации без взаимодействия с пользователем.
Распространенные случаи использования
Документация разработчика библиотеки входа в Google включает руководства и примеры кода для распространенных случаев использования. В этом разделе обсуждается, как FedCM влияет на их поведение.
Интеграция входа в Google в ваше веб-приложение
В этой демонстрации элемент
<div>
и класс отображают кнопку, а для уже вошедших в систему пользователей событиеonload
страницы возвращает учетные данные пользователя. Для входа в систему и установления нового сеанса требуется взаимодействие с пользователем.Инициализация библиотеки выполняется классом
g-signin2
gapi.load
который вызываетgapi.loadgapi.auth2.init
.Жест пользователя, событие
onclick
элемента<div>
, вызываетauth2.signIn
во время входа илиauth2.signOut
при выходе.Создание пользовательской кнопки входа в Google
В первой демонстрации настраиваемые атрибуты используются для управления внешним видом кнопки входа, а для уже вошедших в систему пользователей событие
onload
страницы возвращает учетные данные пользователя. Для входа в систему и установления нового сеанса требуется взаимодействие с пользователем.Инициализация библиотеки выполняется через событие
onload
библиотекиplatform.js
, а кнопка отображается с помощьюgapi.signin2.render
.Жест пользователя, нажимающий кнопку входа, вызывает
auth2.signIn
.Во второй демонстрации элемент
<div>
, стили CSS и пользовательское изображение используются для управления внешним видом кнопки входа. Для входа в систему и установления нового сеанса требуется взаимодействие с пользователем.Инициализация библиотеки выполняется при загрузке документа с помощью функции запуска
gapi.load
которая вызываетgapi.load,gapi.auth2.init
gapi.auth2.attachClickHandler
.Жест пользователя, событие
onclick
элемента<div>
, вызываетauth2.signIn
с использованиемauth2.attachClickHandler
во время входа илиauth2.signOut
при выходе.Мониторинг состояния сеанса пользователя
В этой демонстрации нажатие кнопки используется для входа и выхода пользователя. Для входа в систему и установления нового сеанса требуется взаимодействие с пользователем.
Инициализация библиотеки выполняется путем прямого
gapi.load
,gapi.auth2.init
gapi.auth2.attachClickHandler()
после загрузкиplatform.js
с помощьюscript src
.Жест пользователя, событие
onclick
элемента<div>
, вызываетauth2.signIn
с использованиемauth2.attachClickHandler
во время входа илиauth2.signOut
при выходе.Запрос дополнительных разрешений
В этой демонстрации нажатие кнопки используется для запроса дополнительных областей OAuth 2.0, получения нового токена доступа, а для уже вошедших в систему пользователей событие
onload
страницы возвращает учетные данные пользователя. Для входа в систему и установления нового сеанса требуется взаимодействие с пользователем.Инициализация библиотеки выполняется событием
onload
для библиотекиplatform.js
посредствомgapi.signin2.render
.Жест пользователя, нажав на элемент
<button>
, запускает запрос дополнительных областей OAuth 2.0 с использованиемgoogleUser.grant
илиauth2.signOut
при выходе.Интеграция входа в Google с использованием прослушивателей
В этой демонстрации для уже вошедших в систему пользователей событие
onload
страницы возвращает учетные данные пользователя. Для входа в систему и установления нового сеанса требуется взаимодействие с пользователем.Инициализация библиотеки выполняется при загрузке документа с помощью функции запуска
gapi.load
которая вызываетgapi.load,gapi.auth2.init
gapi.auth2.attachClickHandler
. Затемauth2.isSignedIn.listen
иauth2.currentUser.listen
используются для настройки уведомления об изменениях состояния сеанса. Наконец,auth2.SignIn
вызывается для возврата учетных данных для вошедших в систему пользователей.Жест пользователя, событие
onclick
элемента<div>
, вызываетauth2.signIn
с использованиемauth2.attachClickHandler
во время входа илиauth2.signOut
при выходе.Вход в Google для серверных приложений
В этой демонстрации жест пользователя используется для запроса кода аутентификации OAuth 2.0, а обратный вызов JS выполняет вызов AJAX для отправки ответа на внутренний сервер для проверки.
Инициализация библиотеки выполняется с помощью события
onload
для библиотекиplatform.js
, которая использует функцию запуска дляgapi.load
gapi.auth2.init
.Жест пользователя, щелчок по элементу
<button>
, запускает запрос кода авторизации путем вызоваauth2.grantOfflineAccess
.FedCM требует согласия для каждого экземпляра браузера, даже если пользователи Android уже вошли в систему, необходимо единоразовое согласие.
Управляйте переходным периодом
В течение переходного периода определенный процент пользователей, вошедших в систему, может использовать FedCM, точный процент может варьироваться и может меняться со временем. По умолчанию Google контролирует, сколько запросов на вход используют FedCM, но вы можете согласиться или отказаться от использования FedCM в течение переходного периода. В конце переходного периода FedCM становится обязательным и используется для всех запросов на вход.
Выбор согласия отправляет пользователя через процесс входа в систему FedCM, а выбор отказа отправляет пользователей через существующий процесс входа. Такое поведение контролируется с помощью параметра use_fedcm
.
Подписаться
Может быть полезно контролировать, используют ли все или некоторые попытки входа на ваш сайт API-интерфейсы FedCM. Для этого установите для use_fedcm
значение true
при инициализации библиотеки платформы. В этом случае запрос на вход пользователя использует API FedCM.
Уклоняться
В течение переходного периода процент попыток входа пользователей на ваш сайт будет использовать API FedCM по умолчанию. Если требуется больше времени для внесения изменений в ваше приложение, вы можете временно отказаться от использования API FedCM. Для этого установите use_fedcm
в false
при инициализации библиотеки платформы. В этом случае запрос пользователя не будет использовать API FedCM.
После того, как обязательное принятие происходит, любые настройки use_fedcm
игнорируются библиотекой платформы входа в систему Google.
Получить помощь
Поиск или задайте вопросы на StackoverFlow, используя тег Google-Signin .
,В этом руководстве обсуждается принятие API FedCM библиотекой платформы входа в систему Google. Темы включают временную шкалу и следующие шаги для обратного совместимого обновления в библиотеке, как провести оценку воздействия , и проверить вход пользователей продолжает функционировать, как и ожидалось, и, если это необходимо, инструкции по обновлению вашего веб-приложения. Варианты управления переходным периодом вместе с тем, как получить помощь, также покрываются.
Статус библиотеки
Любые новые веб-приложения заблокированы от использования устаревшей библиотеки платформ Google входа, в то время как приложения, использующие библиотеку, могут продолжаться до дальнейшего уведомления. Окончательная дата заката (выключение) для библиотеки не была установлена. См. Унимок поддержки и заката для большего.
Обратное совместимое обновление добавляет API FedCM в библиотеку входа в Google. В то время как большинство изменений беспрепятственно, обновление вводит различия в подсказках пользователей , политику разрешений IFRAME и Политику безопасности контента (CSP). Эти изменения могут повлиять на ваше веб -приложение и потребовать изменения в коде приложения и конфигурации сайта.
В течение переходного периода вариант конфигурации контролирует, используются ли API FedCM во время входа пользователя.
После переходного периода API FEDCM являются обязательными для всех веб-приложений, используя библиотеку входа в Google.
Хронология
Последнее обновление сентября 2024 года
Это даты и изменения, которые влияют на поведение пользователя:
- Март 2023 г. Университет поддержки библиотеки платформы входа в систему Google.
- Июль 2024 года начинается переходной период , и добавляется поддержка библиотеки платформ Google для API FedCM API. По умолчанию Google контролирует процент запросов пользователей в заре в течение этого времени. Веб -приложения могут явно переопределить это поведение с помощью параметра
use_fedcm
. - Март 2025 г. Обязательное внедрение API FedCM библиотекой платформ Google входа, после чего параметр
use_fedcm
игнорируется, и все запросы пользователя используют Fedcm.
Следующие шаги
Есть три варианта, которые вы можете следовать:
- Проведите оценку воздействия и, если необходимо, обновите свое веб -приложение. Этот подход оценивает, используются ли функции, которые требуют изменения в вашем веб -приложении. Инструкции приведены в следующем разделе этого руководства.
- Перейдите в библиотеку Google Identity Services (ГИС). Настоятельно рекомендуется переход к последней и поддерживаемой библиотеке входа. Сделайте это, следуя этим инструкциям .
- Ничего не делайте. Ваше веб-приложение будет автоматически обновляться, когда библиотека регистрации Google будет перенесена в API FedCM для входа пользователя. Это наименьшая работа, но есть некоторый риск, когда пользователи не могут входить в ваше веб-приложение.
Провести оценку воздействия
Следуйте этими инструкциями, чтобы определить, может ли ваше веб-приложение быть беспрепятственно обновлено с помощью обратного совместимого обновления или необходимы изменения, чтобы пользователи не могли входить в систему, когда библиотека платформы входа в систему Google полностью внедряет API FedCM.
Настраивать
API-интерфейсы браузеров и последняя версия библиотеки платформ Google вход необходимы для использования FedCM во время входа пользователя.
Прежде чем идти дальше:
- Обновление до последней версии Chrome для настольных компьютеров. Chrome для Android требует выпуска M128 или позже и не может быть протестирован с использованием более ранних версий.
Откройте
chrome://flags
и установите следующие функции на эти значения:- #Fedcm-Authz включен
- #включено отслеживание-3PCD
- #Сторонние изделия отключений от инвалида
- #tpcd-metadata-гранты отключены
- #TPCD-гранты отключены
и перезапуск хром.
Установите
use_fedcm
вtrue
при инициализации библиотеки платформы входа Google в вашем веб-приложении. Как правило, инициализация выглядит как:-
gapi.client.init({use_fedcm: true})
, или -
gapi.auth2.init({use_fedcm: true})
, или -
gapi.auth2.authorize({use_fedcm: true})
.
-
Недействительность кэшированных версий библиотеки платформы входа в систему Google. Как правило, этот шаг не нужен, так как последняя версия библиотеки напрямую загружается в браузер, включив
api.js
,client.js
илиplatform.js
в теге<script src>
(запрос может использовать любое из этих имен пакетов для библиотека).Подтвердите настройки OAuth для вашего идентификатора клиента OAuth:
- Откройте страницу учетных данных Google API Console
Убедитесь, что URI вашего сайта включена в авторизованное происхождение JavaScript . URI включает в себя схему и полностью квалифицированное имя хоста. Например,
https://www.example.com
.Необязательно, учетные данные могут быть возвращены с использованием перенаправления в конечную точку, которую вы размещаете, а не через обратный вызов JavaScript. Если это так, убедитесь, что ваши перенаправленные URI включены в авторизованное перенаправление URI . Перенаправление URI включает в себя схему, полностью квалифицированное имя хоста и путь и должен соответствовать правилам проверки URI . Например,
https://www.example.com/auth-receiver
.
Тестирование
После выполнения инструкций в настройке:
- Закройте все существующие Windows Chrome Incognito и откройте новое окно инкогнито. Это очищает любой кэшированный контент или файлы cookie.
- Загрузите страницу входа пользователя и попытайтесь зарегистрироваться.
Следуйте инструкциям в этих разделах этого руководства, чтобы определить и исправить известные проблемы:
Ищите любые ошибки или предупреждения в консоли, связанных с библиотекой входа в Google.
Повторите этот процесс, пока не произойдет ошибок, и вы сможете успешно войти в систему. Вы можете проверить успешный вход, подтвердив
BasicProfile.getEmail()
возвращает ваш адрес электронной почты и чтоGoogleUser.isSignedIn()
True
.
Найдите запрос библиотеки записи Google
Проверьте, необходимы ли изменения политики политики разрешений и безопасности контента , чтобы осмотреть запрос на библиотеку платформы входа в систему Google. Для этого найдите запрос, используя имя и происхождение библиотеки:
- В Chrome откройте сетевую панель DevTools и перезагрузите страницу.
- Используйте значения в столбцах домена и имени , чтобы найти запрос библиотеки:
- Домен
apis.google.com
и - Имя - это либо
api.js
,client.js
илиplatform.js
. Конкретное значение имени зависит от пакета библиотеки, запрашиваемого документом.
- Домен
Например, фильтр на apis.google.com
в столбце домена и platform.js
в столбце имени .
Проверьте разрешения iframe-policy
Ваш сайт может использовать библиотеку платформы входа в систему Google в перекрестном происхождении. Если это так, необходимо обновление.
После выполнения инструкций по поиску записи библиотеки Google вступите , выберите запрос библиотеки записи Google в сети DevTools и найдите заголовок Sec-Fetch-Site
в разделе заголовков запроса на вкладке заголовки . Если значение заголовка составляет:
-
same-site
илиsame-origin
, тогда политики межоооооооооооооригина не применяются, и никаких изменений не требуется. - Изменения
cross-origin
могут потребоваться, если используется iframe.
Чтобы подтвердить, присутствует ли iframe:
- Выберите панель элементов в Chrome Devtools и
- Используйте Ctrl-F, чтобы найти iframe в документе.
Если найден IFRAME, проверьте документ, чтобы проверить наличие вызовов на функции Gapi.Auth2 или директивы script src
, которые загружают библиотеку входа в Google в IFRAME. Если это так:
- Добавьте политику разрешений разрешений
allow="identity-credentials-get"
в родительский iframe.
Повторите этот процесс для каждого iframe в документе. iframes может быть вложена, поэтому обязательно добавьте директиву разрешения на все окружающие родительские iframes.
Проверить политику безопасности контента
Если ваш сайт использует политику безопасности контента, вам может потребоваться обновить свой CSP, чтобы разрешить использование библиотеки входа в Google.
После выполнения инструкций по поиску записей библиотеки Google вступите , выберите запрос библиотеки Google входа в сеть DevTools и найдите заголовок Content-Security-Policy
в разделе «Заголовки ответов» на вкладке заголовков .
Если заголовок не найден, никаких изменений не требуется. В противном случае проверьте, определяется ли какая -либо из этих директив CSP в заголовке CSP и обновите их по:
Добавление
https://apis.google.com/js/
,https://accounts.google.com/gsi/
иhttps://acounts.google.com/o/fedcm/
к любомуconnect-src
,default-src
, илиframe-src
Directives.Добавление в
https://apis.google.com/js/bundle-name.js
в директивуscript-src
. Заменитеbundle-name.js
либо наapi.js
,client.js
илиplatform.js
на основе библиотеки, связывающего запросы на документ.
Проверьте изменения пользователя
Существуют некоторые различия в поведении пользователей, FedCM добавляет модальный диалог, отображаемый браузером, и обновляют требования активации пользователя.
Модальный диалог
Осмотрите макет вашего сайта, чтобы подтвердить, что базовый контент может быть безопасно наложен и временно скрыт модальным диалогом браузера. Если это не так, вам может потребоваться настроить макет или положение некоторых элементов вашего сайта.
Активация пользователя
FedCM включает обновленные требования к активации пользователей. Нажатие кнопки или нажатие на ссылку являются примерами жестов пользователей, которые позволяют сторонним происхождениям делать сетевые запросы или хранить данные. С FedCM браузер подсказывает согласие с пользователем, когда:
- Пользователь первый подписывается в веб-приложение с использованием нового экземпляра браузера, или
-
GoogleAuth.signIn
называется.
Сегодня, если пользователь вписался на ваш веб-сайт раньше, вы можете получить информацию пользователя в виде информации о подписи при инициализации библиотеки регистрации Google с использованием gapi.auth2.init
, без дальнейших взаимодействий с пользователем. Это больше невозможно, если только пользователь впервые не прошел через поток регистрации FedCM, по крайней мере, один раз.
Выбирая Fedcm и вызывая GoogleAuth.signIn
, в следующий раз тот же пользователь посетит ваш веб -сайт, gapi.auth2.init
может получить информацию пользователя во время инициализации без взаимодействия с пользователем.
Общие варианты использования
Документация разработчика для библиотеки входа в Google включает в себя руководства и образцы кода для общих вариантов использования. В этом разделе обсуждается, как FedCM влияет на их поведение.
Интеграция входа в Google в ваше веб-приложение
В этой демонстрации элемент
<div>
и класс рендеринг кнопки, и для уже подписываемых пользователей событиеonload
возвращает учетные данные пользователя. Пользовательское взаимодействие требуется для входа и создания нового сеанса.Инициализация библиотеки осуществляется классом
g-signin2
, который вызываетgapi.load
иgapi.auth2.init
.Пользовательский жест, элемент
onclick
Event<div>
, вызываетauth2.signIn
во время входа илиauth2.signOut
при регистрации.Создание пользовательской кнопки входа в Google
В Demo One , пользовательские атрибуты используются для управления внешним видом кнопки входа и для уже вписанных пользователей, событие
onload
Onlage возвращает учетные данные пользователя. Пользовательское взаимодействие требуется для входа и создания нового сеанса.Инициализация библиотеки выполняется с помощью события
onload
для библиотекиplatform.js
, а кнопка отображаетсяgapi.signin2.render
.Пользовательский жест, нажимая кнопку входа, вызывает
auth2.signIn
.В Demo Two , элемент
<div>
, стили CSS и пользовательский график используются для управления внешним видом кнопки входа. Пользовательское взаимодействие требуется для входа и создания нового сеанса.Инициализация библиотеки выполняется при загрузке документа с использованием начальной функции, которая вызывает
gapi.load
,gapi.auth2.init
иgapi.auth2.attachClickHandler
.Пользовательский жест, событие
<div>
Elementonclick
, вызываетauth2.signIn
с использованиемauth2.attachClickHandler
во время входа илиauth2.signOut
при регистрации.Мониторинг состояния сеанса пользователя
В этой демонстрации нажатие кнопки используется для входа пользователя и регистрации. Пользовательское взаимодействие требуется для входа и создания нового сеанса.
Инициализация библиотеки осуществляется путем непосредственного вызова
gapi.load
,gapi.auth2.init
иgapi.auth2.attachClickHandler()
послеplatform.js
загружается с помощьюscript src
.Пользовательский жест, событие
<div>
Elementonclick
, вызываетauth2.signIn
с использованиемauth2.attachClickHandler
во время входа илиauth2.signOut
при регистрации.Запрашивая дополнительные разрешения
В этой демонстрации нажатие кнопки используется для запроса дополнительных областей OAuth 2.0, получения нового токена доступа, а для уже записанных пользователей событие страницы
onload
возвращает учетные данные пользователя. Пользовательское взаимодействие требуется для входа и создания нового сеанса.Инициализация библиотеки осуществляется событием
onload
для библиотекиplatform.js
с помощью вызова togapi.signin2.render
.Пользовательский жест, нажав на элемент
<button>
, запускает запрос на дополнительные сферы OAuth 2.0 с использованиемgoogleUser.grant
илиauth2.signOut
при регистрации.Интеграция входа в Google с использованием слушателей
В этой демонстрации для уже подписываемых пользователей событие страницы
onload
возвращает учетные данные пользователя. Пользовательское взаимодействие требуется для входа и создания нового сеанса.Инициализация библиотеки выполняется при загрузке документа с использованием начальной функции, которая вызывает
gapi.load
,gapi.auth2.init
иgapi.auth2.attachClickHandler
. Далее,auth2.isSignedIn.listen
иauth2.currentUser.listen
используются для настройки уведомления об изменениях в состояние сеанса. Наконец,auth2.SignIn
призван возвращать учетные данные для подписанных пользователей.Пользовательский жест, событие
<div>
Elementonclick
, вызываетauth2.signIn
с использованиемauth2.attachClickHandler
во время входа илиauth2.signOut
при регистрации.Вход в Google для приложений на стороне сервера
В этой демонстрации пользовательский жест используется для запроса кода Auth Auth OAuth 2.0, а JS -обратный вызов делает вызов AJAX для отправки ответа на сервер бэкэнд для проверки.
Инициализация библиотеки выполняется с использованием события
onload
для библиотекиplatform.js
, которая использует начальную функцию для вызоваgapi.load
иgapi.auth2.init
.Пользовательский жест, нажав на элемент
<button>
, запускает запрос на код авторизации, вызываяauth2.grantOfflineAccess
.FedCM требует согласия для каждого экземпляра браузера, даже если пользователи Android уже вписались, необходимо однократное согласие.
Управлять переходным периодом
В течение переходного периода процент от пользовательских знаков может использовать FedCM, точный процент может варьироваться и может измениться с течением времени. По умолчанию Google контролирует, сколько запросов входа использует FedCM, но вы можете выбрать или отказаться от использования FedCM в течение переходного периода. В конце переходного периода FedCM становится обязательным и используется для всех запросов входа.
Выбор для принятия отправки пользователя через поток входа в систему FedCM, в то же время решив отказаться от отправки пользователей через существующий поток входа. Это поведение контролируется с помощью параметра use_fedcm
.
Образец
Может быть полезно контролировать, используют ли все или некоторые, или некоторые попытки входа на ваш сайт используют API FedCM. Для этого установите use_fedcm
в true
при инициализации библиотеки платформ. В этом случае запрос пользователя использует API FedCM.
Уклоняться
В течение переходного периода процент попыток входа пользователей на ваш сайт будет использовать API FedCM по умолчанию. Если требуется больше времени для внесения изменений в ваше приложение, вы можете временно отказаться от использования API FedCM. Для этого установите use_fedcm
в false
при инициализации библиотеки платформы. В этом случае запрос пользователя не будет использовать API FedCM.
После того, как обязательное принятие происходит, любые настройки use_fedcm
игнорируются библиотекой платформы входа в систему Google.
Получить помощь
Поиск или задайте вопросы на StackoverFlow, используя тег Google-Signin .
,В этом руководстве обсуждается принятие API FedCM библиотекой платформы входа в систему Google. Темы включают временную шкалу и следующие шаги для обратного совместимого обновления в библиотеке, как провести оценку воздействия , и проверить вход пользователей продолжает функционировать, как и ожидалось, и, если это необходимо, инструкции по обновлению вашего веб-приложения. Варианты управления переходным периодом вместе с тем, как получить помощь, также покрываются.
Статус библиотеки
Любые новые веб-приложения заблокированы от использования устаревшей библиотеки платформ Google входа, в то время как приложения, использующие библиотеку, могут продолжаться до дальнейшего уведомления. Окончательная дата заката (выключение) для библиотеки не была установлена. См. Унимок поддержки и заката для большего.
Обратное совместимое обновление добавляет API FedCM в библиотеку входа в Google. В то время как большинство изменений беспрепятственно, обновление вводит различия в подсказках пользователей , политику разрешений IFRAME и Политику безопасности контента (CSP). Эти изменения могут повлиять на ваше веб -приложение и потребовать изменения в коде приложения и конфигурации сайта.
В течение переходного периода вариант конфигурации контролирует, используются ли API FedCM во время входа пользователя.
После переходного периода API FEDCM являются обязательными для всех веб-приложений, используя библиотеку входа в Google.
Хронология
Последнее обновление сентября 2024 года
Это даты и изменения, которые влияют на поведение пользователя:
- Март 2023 г. Университет поддержки библиотеки платформы входа в систему Google.
- Июль 2024 года начинается переходной период , и добавляется поддержка библиотеки платформ Google для API FedCM API. По умолчанию Google контролирует процент запросов пользователей в заре в течение этого времени. Веб -приложения могут явно переопределить это поведение с помощью параметра
use_fedcm
. - Март 2025 г. Обязательное внедрение API FedCM библиотекой платформ Google входа, после чего параметр
use_fedcm
игнорируется, и все запросы пользователя используют Fedcm.
Следующие шаги
Есть три варианта, которые вы можете следовать:
- Проведите оценку воздействия и, если необходимо, обновите свое веб -приложение. Этот подход оценивает, используются ли функции, которые требуют изменения в вашем веб -приложении. Инструкции приведены в следующем разделе этого руководства.
- Перейдите в библиотеку Google Identity Services (ГИС). Настоятельно рекомендуется переход к последней и поддерживаемой библиотеке входа. Сделайте это, следуя этим инструкциям .
- Ничего не делайте. Ваше веб-приложение будет автоматически обновляться, когда библиотека регистрации Google будет перенесена в API FedCM для входа пользователя. Это наименьшая работа, но есть некоторый риск, когда пользователи не могут входить в ваше веб-приложение.
Провести оценку воздействия
Следуйте этими инструкциями, чтобы определить, может ли ваше веб-приложение быть беспрепятственно обновлено с помощью обратного совместимого обновления или необходимы изменения, чтобы пользователи не могли входить в систему, когда библиотека платформы входа в систему Google полностью внедряет API FedCM.
Настраивать
API-интерфейсы браузеров и последняя версия библиотеки платформ Google вход необходимы для использования FedCM во время входа пользователя.
Прежде чем идти дальше:
- Обновление до последней версии Chrome для настольных компьютеров. Chrome для Android требует выпуска M128 или позже и не может быть протестирован с использованием более ранних версий.
Откройте
chrome://flags
и установите следующие функции на эти значения:- #Fedcm-Authz включен
- #включено отслеживание-3PCD
- #Сторонние изделия отключений от инвалида
- #tpcd-metadata-гранты отключены
- #TPCD-гранты отключены
и перезапуск хром.
Установите
use_fedcm
вtrue
при инициализации библиотеки платформы входа Google в вашем веб-приложении. Как правило, инициализация выглядит как:-
gapi.client.init({use_fedcm: true})
, или -
gapi.auth2.init({use_fedcm: true})
, или -
gapi.auth2.authorize({use_fedcm: true})
.
-
Недействительность кэшированных версий библиотеки платформы входа в систему Google. Как правило, этот шаг не нужен, так как последняя версия библиотеки напрямую загружается в браузер, включив
api.js
,client.js
илиplatform.js
в теге<script src>
(запрос может использовать любое из этих имен пакетов для библиотека).Подтвердите настройки OAuth для вашего идентификатора клиента OAuth:
- Откройте страницу учетных данных Google API Console
Убедитесь, что URI вашего сайта включена в авторизованное происхождение JavaScript . URI включает в себя схему и полностью квалифицированное имя хоста. Например,
https://www.example.com
.Необязательно, учетные данные могут быть возвращены с использованием перенаправления в конечную точку, которую вы размещаете, а не через обратный вызов JavaScript. Если это так, убедитесь, что ваши перенаправленные URI включены в авторизованное перенаправление URI . Перенаправление URI включает в себя схему, полностью квалифицированное имя хоста и путь и должен соответствовать правилам проверки URI . Например,
https://www.example.com/auth-receiver
.
Тестирование
После выполнения инструкций в настройке:
- Закройте все существующие Windows Chrome Incognito и откройте новое окно инкогнито. Это очищает любой кэшированный контент или файлы cookie.
- Загрузите страницу входа пользователя и попытайтесь зарегистрироваться.
Следуйте инструкциям в этих разделах этого руководства, чтобы определить и исправить известные проблемы:
Ищите любые ошибки или предупреждения в консоли, связанных с библиотекой входа в Google.
Повторите этот процесс, пока не произойдет ошибок, и вы сможете успешно войти в систему. Вы можете проверить успешный вход, подтвердив
BasicProfile.getEmail()
возвращает ваш адрес электронной почты и чтоGoogleUser.isSignedIn()
True
.
Найдите запрос библиотеки записи Google
Проверьте, необходимы ли изменения политики политики разрешений и безопасности контента , чтобы осмотреть запрос на библиотеку платформы входа в систему Google. Для этого найдите запрос, используя имя и происхождение библиотеки:
- В Chrome откройте сетевую панель DevTools и перезагрузите страницу.
- Используйте значения в столбцах домена и имени , чтобы найти запрос библиотеки:
- Домен
apis.google.com
и - Имя - это либо
api.js
,client.js
илиplatform.js
. Конкретное значение имени зависит от пакета библиотеки, запрашиваемого документом.
- Домен
Например, фильтр на apis.google.com
в столбце домена и platform.js
в столбце имени .
Проверьте разрешения iframe-policy
Ваш сайт может использовать библиотеку платформы входа в систему Google в перекрестном происхождении. Если это так, необходимо обновление.
После выполнения инструкций по поиску записи библиотеки Google вступите , выберите запрос библиотеки записи Google в сети DevTools и найдите заголовок Sec-Fetch-Site
в разделе заголовков запроса на вкладке заголовки . Если значение заголовка составляет:
-
same-site
илиsame-origin
, тогда политики межоооооооооооооригина не применяются, и никаких изменений не требуется. - Изменения
cross-origin
могут потребоваться, если используется iframe.
Чтобы подтвердить, присутствует ли iframe:
- Выберите панель элементов в Chrome Devtools и
- Используйте Ctrl-F, чтобы найти iframe в документе.
Если найден IFRAME, проверьте документ, чтобы проверить наличие вызовов на функции Gapi.Auth2 или директивы script src
, которые загружают библиотеку входа в Google в IFRAME. Если это так:
- Добавьте политику разрешений разрешений
allow="identity-credentials-get"
в родительский iframe.
Повторите этот процесс для каждого iframe в документе. iframes может быть вложена, поэтому обязательно добавьте директиву разрешения на все окружающие родительские iframes.
Проверить политику безопасности контента
Если ваш сайт использует политику безопасности контента, вам может потребоваться обновить свой CSP, чтобы разрешить использование библиотеки входа в Google.
После выполнения инструкций по поиску записей библиотеки Google вступите , выберите запрос библиотеки Google входа в сеть DevTools и найдите заголовок Content-Security-Policy
в разделе «Заголовки ответов» на вкладке заголовков .
Если заголовок не найден, никаких изменений не требуется. В противном случае проверьте, определяется ли какая -либо из этих директив CSP в заголовке CSP и обновите их по:
Добавление
https://apis.google.com/js/
,https://accounts.google.com/gsi/
иhttps://acounts.google.com/o/fedcm/
к любомуconnect-src
,default-src
, илиframe-src
Directives.Добавление в
https://apis.google.com/js/bundle-name.js
в директивуscript-src
. Заменитеbundle-name.js
либо наapi.js
,client.js
илиplatform.js
на основе библиотеки, связывающего запросы на документ.
Проверьте изменения пользователя
Существуют некоторые различия в поведении пользователей, FedCM добавляет модальный диалог, отображаемый браузером, и обновляют требования активации пользователя.
Модальный диалог
Осмотрите макет вашего сайта, чтобы подтвердить, что базовый контент может быть безопасно наложен и временно скрыт модальным диалогом браузера. Если это не так, вам может потребоваться настроить макет или положение некоторых элементов вашего сайта.
Активация пользователя
FedCM включает обновленные требования к активации пользователей. Нажатие кнопки или нажатие на ссылку являются примерами жестов пользователей, которые позволяют сторонним происхождениям делать сетевые запросы или хранить данные. С FedCM браузер подсказывает согласие с пользователем, когда:
- Пользователь первый подписывается в веб-приложение с использованием нового экземпляра браузера, или
-
GoogleAuth.signIn
называется.
Сегодня, если пользователь вписался на ваш веб-сайт раньше, вы можете получить информацию пользователя в виде информации о подписи при инициализации библиотеки регистрации Google с использованием gapi.auth2.init
, без дальнейших взаимодействий с пользователем. Это больше невозможно, если только пользователь впервые не прошел через поток регистрации FedCM, по крайней мере, один раз.
Выбирая Fedcm и вызывая GoogleAuth.signIn
, в следующий раз тот же пользователь посетит ваш веб -сайт, gapi.auth2.init
может получить информацию пользователя во время инициализации без взаимодействия с пользователем.
Общие варианты использования
Документация разработчика для библиотеки входа в Google включает в себя руководства и образцы кода для общих вариантов использования. В этом разделе обсуждается, как FedCM влияет на их поведение.
Интеграция входа в Google в ваше веб-приложение
В этой демонстрации элемент
<div>
и класс рендеринг кнопки, и для уже подписываемых пользователей событиеonload
возвращает учетные данные пользователя. Пользовательское взаимодействие требуется для входа и создания нового сеанса.Инициализация библиотеки осуществляется классом
g-signin2
, который вызываетgapi.load
иgapi.auth2.init
.Пользовательский жест, элемент
onclick
Event<div>
, вызываетauth2.signIn
во время входа илиauth2.signOut
при регистрации.Создание пользовательской кнопки входа в Google
В Demo One , пользовательские атрибуты используются для управления внешним видом кнопки входа и для уже вписанных пользователей, событие
onload
Onlage возвращает учетные данные пользователя. Пользовательское взаимодействие требуется для входа и создания нового сеанса.Инициализация библиотеки выполняется с помощью события
onload
для библиотекиplatform.js
, а кнопка отображаетсяgapi.signin2.render
.Пользовательский жест, нажимая кнопку входа, вызывает
auth2.signIn
.В Demo Two , элемент
<div>
, стили CSS и пользовательский график используются для управления внешним видом кнопки входа. Пользовательское взаимодействие требуется для входа и создания нового сеанса.Инициализация библиотеки выполняется при загрузке документа с использованием начальной функции, которая вызывает
gapi.load
,gapi.auth2.init
иgapi.auth2.attachClickHandler
.Пользовательский жест, событие
<div>
Elementonclick
, вызываетauth2.signIn
с использованиемauth2.attachClickHandler
во время входа илиauth2.signOut
при регистрации.Мониторинг состояния сеанса пользователя
В этой демонстрации нажатие кнопки используется для входа пользователя и регистрации. Пользовательское взаимодействие требуется для входа и создания нового сеанса.
Инициализация библиотеки осуществляется путем непосредственного вызова
gapi.load
,gapi.auth2.init
иgapi.auth2.attachClickHandler()
послеplatform.js
загружается с помощьюscript src
.Пользовательский жест, событие
<div>
Elementonclick
, вызываетauth2.signIn
с использованиемauth2.attachClickHandler
во время входа илиauth2.signOut
при регистрации.Запрашивая дополнительные разрешения
В этой демонстрации нажатие кнопки используется для запроса дополнительных областей OAuth 2.0, получения нового токена доступа, а для уже записанных пользователей событие страницы
onload
возвращает учетные данные пользователя. Пользовательское взаимодействие требуется для входа и создания нового сеанса.Инициализация библиотеки осуществляется событием
onload
для библиотекиplatform.js
с помощью вызова togapi.signin2.render
.Пользовательский жест, нажав на элемент
<button>
, запускает запрос на дополнительные сферы OAuth 2.0 с использованиемgoogleUser.grant
илиauth2.signOut
при регистрации.Интеграция входа в Google с использованием слушателей
В этой демонстрации для уже подписываемых пользователей событие страницы
onload
возвращает учетные данные пользователя. Пользовательское взаимодействие требуется для входа и создания нового сеанса.Инициализация библиотеки выполняется при загрузке документа с использованием начальной функции, которая вызывает
gapi.load
,gapi.auth2.init
иgapi.auth2.attachClickHandler
. Далее,auth2.isSignedIn.listen
иauth2.currentUser.listen
используются для настройки уведомления об изменениях в состояние сеанса. Наконец,auth2.SignIn
призван возвращать учетные данные для подписанных пользователей.Пользовательский жест, событие
<div>
Elementonclick
, вызываетauth2.signIn
с использованиемauth2.attachClickHandler
во время входа илиauth2.signOut
при регистрации.Вход в Google для приложений на стороне сервера
В этой демонстрации пользовательский жест используется для запроса кода Auth Auth OAuth 2.0, а JS -обратный вызов делает вызов AJAX для отправки ответа на сервер бэкэнд для проверки.
Инициализация библиотеки выполняется с использованием события
onload
для библиотекиplatform.js
, которая использует начальную функцию для вызоваgapi.load
иgapi.auth2.init
.Пользовательский жест, нажав на элемент
<button>
, запускает запрос на код авторизации, вызываяauth2.grantOfflineAccess
.FedCM требует согласия для каждого экземпляра браузера, даже если пользователи Android уже вписались, необходимо однократное согласие.
Управлять переходным периодом
В течение переходного периода процент от пользовательских знаков может использовать FedCM, точный процент может варьироваться и может измениться с течением времени. По умолчанию Google контролирует, сколько запросов входа использует FedCM, но вы можете выбрать или отказаться от использования FedCM в течение переходного периода. At the end of the transition period FedCM becomes mandatory and is used for all sign-in requests.
Choosing to opt-in sends the user through the FedCM sign-in flow, while choosing to opt-out sends the users through the existing sign-in flow. This behavior is controlled using the use_fedcm
parameter.
Opt-in
It may be helpful to control whether all, or some, sign-in attempts to your site use FedCM APIs. To do this, set use_fedcm
to true
when initializing the platform library. The user sign-in request uses FedCM APIs in this case.
Уклоняться
During the transition period, a percentage of user sign-in attempts to your site will use FedCM APIs by default. If more time is needed to make changes to your app, you may temporarily opt-out of using FedCM APIs. To do this, set use_fedcm
to false
when initializing the platform library. The user sign-in request won't use FedCM APIs in this case.
After mandatory adoption occurs, any use_fedcm
settings are ignored by the Google Sign-in platform library.
Получить помощь
Search or ask questions on StackOverflow using the google-signin tag.