Вы можете разрешить пользователям проходить аутентификацию в Firebase с помощью аккаунтов Google. Вы можете использовать Firebase SDK для выполнения входа с аккаунтом Google или выполнить вход вручную с помощью библиотеки "Войти с аккаунтом Google" и передать полученный токен идентификатора в Firebase.
Запрос к ИИ для получения помощи
Чтобы получить помощь от ИИ, скопируйте запрос ниже в ИИ-агента программирования (например, Antigravity, Claude Code, Codex или Cursor). Вы можете изменить запрос и попросить агента переделать изображение. Подробную информацию об установке можно найти в разделе Навыки агента Firebase.
Help me use Firebase in my app.
1. Make sure that **Firebase agent skills** are installed and updated. For Claude Code, Codex, or Cursor agents, help me install the Firebase plugin. For other agents, run `npx skills add firebase/agent-skills`. Always try to use **Firebase agent skills** for Firebase-related tasks.
2. Help me set up and use Firebase Authentication with Google Sign-In in my app.
Подготовка
- Добавьте Firebase в свой проект JavaScript.
- Включите Google в качестве поставщика услуг входа для проекта Firebase:
- В консоли Firebase выберите Безопасность > Аутентификация.
- На вкладке Способ входа включите поставщика для входа через Google.
- Нажмите Сохранить.
Как обрабатывать процесс входа с помощью Firebase SDK
Если вы создаете веб-приложение, самый простой способ аутентификации пользователей с помощью аккаунтов Google в Firebase – реализовать процесс входа с помощью Firebase JavaScript SDK. (Если вы хотите аутентифицировать пользователя в Node.js или другой среде, отличной от браузера, вам нужно будет вручную реализовать процесс входа.)
Чтобы реализовать процесс входа с помощью Firebase JavaScript SDK, выполните следующие действия:
- Создайте экземпляр объекта поставщика Google:
Web
import { GoogleAuthProvider } from "firebase/auth"; const provider = new GoogleAuthProvider();
Web
var provider = new firebase.auth.GoogleAuthProvider();
- Необязательно. Укажите дополнительные области действия OAuth 2.0, которые вы хотите запросить у поставщика услуг аутентификации. Чтобы добавить область действия, вызовите метод
addScope. Пример:Ознакомьтесь с документацией поставщика услуг аутентификации.Web
provider.addScope('https://www.googleapis.com/auth/contacts.readonly');
Web
provider.addScope('https://www.googleapis.com/auth/contacts.readonly');
- Необязательно. Чтобы локализовать поток OAuth поставщика на предпочитаемый пользователем язык, не передавая явным образом соответствующие специальные параметры OAuth, обновите код языка в экземпляре Auth перед запуском потока OAuth. Пример:
Web
import { getAuth } from "firebase/auth"; const auth = getAuth(); auth.languageCode = 'it'; // To apply the default browser preference instead of explicitly setting it. // auth.useDeviceLanguage();
Web
firebase.auth().languageCode = 'it'; // To apply the default browser preference instead of explicitly setting it. // firebase.auth().useDeviceLanguage();
- Необязательно. Укажите дополнительные специальные параметры поставщика OAuth, которые вы хотите отправлять с запросом OAuth. Чтобы добавить специальный параметр, вызовите метод
setCustomParametersдля инициализированного поставщика, передав объект, содержащий ключ, указанный в документации поставщика OAuth, и соответствующее значение. Пример:Зарезервированные обязательные параметры OAuth не допускаются и будут игнорироваться. Подробнее о поставщике аутентификации…Web
provider.setCustomParameters({ 'login_hint': 'user@example.com' });
Web
provider.setCustomParameters({ 'login_hint': 'user@example.com' });
- Выполните аутентификацию в Firebase с помощью объекта поставщика Google. Вы можете предложить пользователям войти в аккаунт Google, открыв всплывающее окно или перенаправив их на страницу входа. На мобильных устройствах рекомендуется использовать метод переадресации.
- Чтобы войти в систему с помощью всплывающего окна, вызовите функцию
signInWithPopup:Обратите внимание, что вы можете получить токен OAuth поставщика Google, который можно использовать для получения дополнительных данных с помощью API Google.Web
import { getAuth, signInWithPopup, GoogleAuthProvider } from "firebase/auth"; const auth = getAuth(); signInWithPopup(auth, provider) .then((result) => { // This gives you a Google Access Token. You can use it to access the Google API. const credential = GoogleAuthProvider.credentialFromResult(result); const token = credential.accessToken; // The signed-in user info. const user = result.user; // IdP data available using getAdditionalUserInfo(result) // ... }).catch((error) => { // Handle Errors here. const errorCode = error.code; const errorMessage = error.message; // The email of the user's account used. const email = error.customData.email; // The AuthCredential type that was used. const credential = GoogleAuthProvider.credentialFromError(error); // ... });
Web
firebase.auth() .signInWithPopup(provider) .then((result) => { /** @type {firebase.auth.OAuthCredential} */ var credential = result.credential; // This gives you a Google Access Token. You can use it to access the Google API. var token = credential.accessToken; // The signed-in user info. var user = result.user; // IdP data available in result.additionalUserInfo.profile. // ... }).catch((error) => { // Handle Errors here. var errorCode = error.code; var errorMessage = error.message; // The email of the user's account used. var email = error.email; // The firebase.auth.AuthCredential type that was used. var credential = error.credential; // ... });
Здесь же можно выявлять и обрабатывать ошибки. Список кодов ошибок можно найти в справочной документации по аутентификации.
- Чтобы войти в аккаунт, перейдя на страницу входа, вызовите метод
signInWithRedirect. При использовании метода `signInWithRedirect` следуйте рекомендациям.Затем вы можете получить токен OAuth поставщика Google, вызвавWeb
import { getAuth, signInWithRedirect } from "firebase/auth"; const auth = getAuth(); signInWithRedirect(auth, provider);
Web
firebase.auth().signInWithRedirect(provider);
getRedirectResultпри загрузке страницы:Здесь же можно выявлять и обрабатывать ошибки. Список кодов ошибок можно найти в справочной документации по аутентификации.Web
import { getAuth, getRedirectResult, GoogleAuthProvider } from "firebase/auth"; const auth = getAuth(); getRedirectResult(auth) .then((result) => { // This gives you a Google Access Token. You can use it to access Google APIs. const credential = GoogleAuthProvider.credentialFromResult(result); const token = credential.accessToken; // The signed-in user info. const user = result.user; // IdP data available using getAdditionalUserInfo(result) // ... }).catch((error) => { // Handle Errors here. const errorCode = error.code; const errorMessage = error.message; // The email of the user's account used. const email = error.customData.email; // The AuthCredential type that was used. const credential = GoogleAuthProvider.credentialFromError(error); // ... });
Web
firebase.auth() .getRedirectResult() .then((result) => { if (result.credential) { /** @type {firebase.auth.OAuthCredential} */ var credential = result.credential; // This gives you a Google Access Token. You can use it to access the Google API. var token = credential.accessToken; // ... } // The signed-in user info. var user = result.user; // IdP data available in result.additionalUserInfo.profile. // ... }).catch((error) => { // Handle Errors here. var errorCode = error.code; var errorMessage = error.message; // The email of the user's account used. var email = error.email; // The firebase.auth.AuthCredential type that was used. var credential = error.credential; // ... });
- Чтобы войти в систему с помощью всплывающего окна, вызовите функцию
Как пройти аутентификацию с помощью Firebase в расширении Chrome
Если вы создаете приложение для расширения Chrome, ознакомьтесь с руководством по работе с документами вне экрана.
Дальнейшие действия
После первого входа пользователя создается новый аккаунт, связанный с учетными данными, которые он использовал (именем пользователя и паролем, номером телефона или информацией поставщика услуг аутентификации). Этот новый аккаунт хранится в проекте Firebase и позволяет идентифицировать пользователя во всех приложениях проекта независимо от того, как он вошел в аккаунт.
-
В приложениях рекомендуется отслеживать статус аутентификации пользователя, установив наблюдатель для объекта
Auth. Затем вы можете получить основную информацию о профиле пользователя из объектаUser. Подробнее о том, как управлять пользователями… В Firebase Realtime Database и Cloud Storage правилах безопасности можно получить уникальный идентификатор пользователя, выполнившего вход, из переменной
authи использовать его, чтобы контролировать, к каким данным у пользователя есть доступ.
Вы можете разрешить пользователям входить в ваше приложение, используя несколько поставщиков услуг аутентификации, связав учетные данные поставщика услуг аутентификации с существующим аккаунтом пользователя.
Чтобы выйти из аккаунта пользователя, вызовите функцию
signOut:
Web
import { getAuth, signOut } from "firebase/auth"; const auth = getAuth(); signOut(auth).then(() => { // Sign-out successful. }).catch((error) => { // An error happened. });
Web
firebase.auth().signOut().then(() => { // Sign-out successful. }).catch((error) => { // An error happened. });