HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-21
1 <p><a>#статьи</a></p>
1 <p><a>#статьи</a></p>
2 <ul><li>15 май 2024</li>
2 <ul><li>15 май 2024</li>
3 <li>0</li>
3 <li>0</li>
4 </ul><p>Платформа от Google для тех, кому лень возиться с бэкендом.</p>
4 </ul><p>Платформа от Google для тех, кому лень возиться с бэкендом.</p>
5 <p>Иллюстрация: Оля Ежак для Skillbox Media</p>
5 <p>Иллюстрация: Оля Ежак для Skillbox Media</p>
6 <p>Востоковед, интересующийся IT. В прошлом редактор раздела "Системный блок" журнала "Fакел", автор журналов Computer Gaming World RE, Upgrade Special, руководитель веб-ресурсов компании 1С-Softclub.</p>
6 <p>Востоковед, интересующийся IT. В прошлом редактор раздела "Системный блок" журнала "Fакел", автор журналов Computer Gaming World RE, Upgrade Special, руководитель веб-ресурсов компании 1С-Softclub.</p>
7 <p>Для работы современного приложения нужно много компонентов: базы данных, системы безопасности, кэширования, аналитики, сторонние интеграции. Разработчики могут потратить время и сделать всё сами или воспользоваться уже готовым решением. В этой статье рассказываем про Firebase - платформу, в которой есть всё необходимое для разработки бэкэнда, - и создаём своё первое приложение с системой авторизации пользователей.</p>
7 <p>Для работы современного приложения нужно много компонентов: базы данных, системы безопасности, кэширования, аналитики, сторонние интеграции. Разработчики могут потратить время и сделать всё сами или воспользоваться уже готовым решением. В этой статье рассказываем про Firebase - платформу, в которой есть всё необходимое для разработки бэкэнда, - и создаём своё первое приложение с системой авторизации пользователей.</p>
8 <p><strong>Эксперт</strong></p>
8 <p><strong>Эксперт</strong></p>
9 <h3><strong>Анна Жаркова</strong></h3>
9 <h3><strong>Анна Жаркова</strong></h3>
10 <p>Lead Mobile Developer в <a>Usetech</a>. Пишет нативные приложения под iOS и Android и кросс-платформенные на Xamarin, Xamarin.Forms и Kotlin Multiplatform. Эксперт Skillbox по мобильной разработке.Автор на "<a>Хабре</a>" и <a>Medium</a>. Пишет статьи, выступает на конференциях и митапах. Член программного комитета Mobius, CodeFest, "Стачка". Увлекается живописью и участвует в выставках.</p>
10 <p>Lead Mobile Developer в <a>Usetech</a>. Пишет нативные приложения под iOS и Android и кросс-платформенные на Xamarin, Xamarin.Forms и Kotlin Multiplatform. Эксперт Skillbox по мобильной разработке.Автор на "<a>Хабре</a>" и <a>Medium</a>. Пишет статьи, выступает на конференциях и митапах. Член программного комитета Mobius, CodeFest, "Стачка". Увлекается живописью и участвует в выставках.</p>
11 <p><a><strong>Firebase</strong></a><strong></strong>- набор инструментов и сервисов для разработки мобильных и веб-приложений от Google. С его помощью можно быстро развернуть бэкенд со своей серверной логикой, подключить базы данных и настроить авторизацию пользователей. Часто платформу используют для создания MVP и разработки при ограниченных ресурсах.</p>
11 <p><a><strong>Firebase</strong></a><strong></strong>- набор инструментов и сервисов для разработки мобильных и веб-приложений от Google. С его помощью можно быстро развернуть бэкенд со своей серверной логикой, подключить базы данных и настроить авторизацию пользователей. Часто платформу используют для создания MVP и разработки при ограниченных ресурсах.</p>
12 <p>Платформа облачная, поэтому все ресурсы приложений, включая исходный код и базы данных, хранятся на серверах Google. Такой подход используют стартапы и независимые разработчики, но крупные компании предпочитают более приватные решения.</p>
12 <p>Платформа облачная, поэтому все ресурсы приложений, включая исходный код и базы данных, хранятся на серверах Google. Такой подход используют стартапы и независимые разработчики, но крупные компании предпочитают более приватные решения.</p>
13 <p>Firebase включает в себя следующие облачные инструменты:</p>
13 <p>Firebase включает в себя следующие облачные инструменты:</p>
14 <ul><li><strong>Аутентификация.</strong><a>Firebase Authentication</a>обеспечивает безопасный и простой способ регистрации и входа пользователей в приложение с помощью электронной почты и пароля, номера телефона или социальных сетей. Поддерживаются даже сложные сценарии слияния разных аккаунтов.</li>
14 <ul><li><strong>Аутентификация.</strong><a>Firebase Authentication</a>обеспечивает безопасный и простой способ регистрации и входа пользователей в приложение с помощью электронной почты и пароля, номера телефона или социальных сетей. Поддерживаются даже сложные сценарии слияния разных аккаунтов.</li>
15 <li><strong>Базы данных реального времени.</strong><a>Firebase Realtime Database</a> - это облачная база данных NoSQL, позволяющая хранить и синхронизировать данные в реальном времени. Обеспечивает одновременную работу на разных устройствах и оптимизирована для автономного использования.</li>
15 <li><strong>Базы данных реального времени.</strong><a>Firebase Realtime Database</a> - это облачная база данных NoSQL, позволяющая хранить и синхронизировать данные в реальном времени. Обеспечивает одновременную работу на разных устройствах и оптимизирована для автономного использования.</li>
16 </ul><ul><li><strong>Облачная БД.</strong><a>Cloud Firestore</a> - это база данных NoSQL, позволяющая хранить, синхронизировать и запрашивать данные для мобильных и веб-приложений. К примеру, можно разработать приложение с функциями совместной работы, данные которого будут обновляться в реальном времени.</li>
16 </ul><ul><li><strong>Облачная БД.</strong><a>Cloud Firestore</a> - это база данных NoSQL, позволяющая хранить, синхронизировать и запрашивать данные для мобильных и веб-приложений. К примеру, можно разработать приложение с функциями совместной работы, данные которого будут обновляться в реальном времени.</li>
17 <li><strong>Хостинг.</strong>Готовый проект можно разместить на серверах Firebase. Поддерживается кэширование в сетях доставки контента (CDN) по всему миру, что позволяет оптимизировать работу приложения. Например, если разработчик использует серверы в США, а часть пользователей находятся в России, то они смогут получать контент из кэша без задержек.</li>
17 <li><strong>Хостинг.</strong>Готовый проект можно разместить на серверах Firebase. Поддерживается кэширование в сетях доставки контента (CDN) по всему миру, что позволяет оптимизировать работу приложения. Например, если разработчик использует серверы в США, а часть пользователей находятся в России, то они смогут получать контент из кэша без задержек.</li>
18 </ul><ul><li><strong>Облачное хранилище.</strong>Можно хранить пользовательский контент в облаке. К примеру, фотографии или видео, чтобы не занимать место на устройстве.</li>
18 </ul><ul><li><strong>Облачное хранилище.</strong>Можно хранить пользовательский контент в облаке. К примеру, фотографии или видео, чтобы не занимать место на устройстве.</li>
19 <li><strong>Облачные сообщения.</strong>Система<a>Firebase Cloud Messaging</a>(FCM) позволяет отправлять уведомления на устройства пользователей.</li>
19 <li><strong>Облачные сообщения.</strong>Система<a>Firebase Cloud Messaging</a>(FCM) позволяет отправлять уведомления на устройства пользователей.</li>
20 <li><strong>Отчёты об ошибках.</strong><a>Firebase Crashlytics</a>помогает отслеживать сбои в приложениях и быстро исправлять их. Crashlytics легко интегрируется с Android, iOS, macOS, tvOS и watchOS.</li>
20 <li><strong>Отчёты об ошибках.</strong><a>Firebase Crashlytics</a>помогает отслеживать сбои в приложениях и быстро исправлять их. Crashlytics легко интегрируется с Android, iOS, macOS, tvOS и watchOS.</li>
21 <li><strong>Мониторинг производительности.</strong><a>Firebase Performance Monitoring</a>позволяет отслеживать ключевые метрики - использование CPU, памяти и сетевого трафика. С их помощью можно понять, как приложение работает на устройствах пользователей.</li>
21 <li><strong>Мониторинг производительности.</strong><a>Firebase Performance Monitoring</a>позволяет отслеживать ключевые метрики - использование CPU, памяти и сетевого трафика. С их помощью можно понять, как приложение работает на устройствах пользователей.</li>
22 <li><strong>Тестовая лаборатория.</strong>Облачный сервис<a>Firebase Test Lab</a>упрощает тестирование приложения на различных физических и виртуальных устройствах.</li>
22 <li><strong>Тестовая лаборатория.</strong>Облачный сервис<a>Firebase Test Lab</a>упрощает тестирование приложения на различных физических и виртуальных устройствах.</li>
23 <li><strong>Аналитика.</strong>Поддерживается работа с <a>Google Analytics</a>, чтобы разработчики могли получать отчёты о поведении пользователей в приложении.</li>
23 <li><strong>Аналитика.</strong>Поддерживается работа с <a>Google Analytics</a>, чтобы разработчики могли получать отчёты о поведении пользователей в приложении.</li>
24 <li><strong>Машинное обучение.</strong>Firebase работает с облачными системами машинного обучения. Например, можно сделать так, чтобы ваше приложение распознавало типы продуктов питания или различало виды животных. Пока сервис работает в режиме бета-тестирования.</li>
24 <li><strong>Машинное обучение.</strong>Firebase работает с облачными системами машинного обучения. Например, можно сделать так, чтобы ваше приложение распознавало типы продуктов питания или различало виды животных. Пока сервис работает в режиме бета-тестирования.</li>
25 </ul><ul><li><strong>A/B-тесты.</strong>С помощью системы<a>Firebase A/B Testing</a>можно запустить сразу две версии приложения, чтобы понять, какая из них больше нравится пользователям. Это помогает проверить функции и дизайн до того, как обновление станет общедоступным.</li>
25 </ul><ul><li><strong>A/B-тесты.</strong>С помощью системы<a>Firebase A/B Testing</a>можно запустить сразу две версии приложения, чтобы понять, какая из них больше нравится пользователям. Это помогает проверить функции и дизайн до того, как обновление станет общедоступным.</li>
26 <li><strong>Проверка приложений.</strong><a>App Check</a> - это дополнительный уровень безопасности, который проверяет входящий трафик. Если он поступает не от приложения, то система заблокирует доступ. Это позволяет защитить пользователей от фишинговых атак.</li>
26 <li><strong>Проверка приложений.</strong><a>App Check</a> - это дополнительный уровень безопасности, который проверяет входящий трафик. Если он поступает не от приложения, то система заблокирует доступ. Это позволяет защитить пользователей от фишинговых атак.</li>
27 <li><strong>Библиотека плагинов.</strong>Например, можно интегрировать платежи через систему Stripe или добавить продвинутые алгоритмы сжатия контента.</li>
27 <li><strong>Библиотека плагинов.</strong>Например, можно интегрировать платежи через систему Stripe или добавить продвинутые алгоритмы сжатия контента.</li>
28 </ul><p>Разработчики Firebase уделяют много внимания безопасности. Все центры данных оснащены необходимыми сертификатами, данные шифруются, есть управление доступом на основе ролей (RBAC), а ещё Firebase позволяет отследить, кто и когда получал доступ к данным приложения.</p>
28 </ul><p>Разработчики Firebase уделяют много внимания безопасности. Все центры данных оснащены необходимыми сертификатами, данные шифруются, есть управление доступом на основе ролей (RBAC), а ещё Firebase позволяет отследить, кто и когда получал доступ к данным приложения.</p>
29 <p>Изначально сервис создавали с прицелом на мобильную разработку, поэтому его легко интегрировать в Android- и iOS-приложения. Также есть поддержка веб-приложений, в том числе прогрессивных (PWA). Кроме того, Firebase можно использовать для разработки на Unity.</p>
29 <p>Изначально сервис создавали с прицелом на мобильную разработку, поэтому его легко интегрировать в Android- и iOS-приложения. Также есть поддержка веб-приложений, в том числе прогрессивных (PWA). Кроме того, Firebase можно использовать для разработки на Unity.</p>
30 <p>Для небольших приложений предусмотрен бесплатный тариф Spark. Он включает в себя 5 ГБ облачного хранилища и 10 ГБ для хостинга. Функции индексации в поисковиках, тестирования, мониторинга производительности и отправки уведомлений бесплатны независимо от тарифа.</p>
30 <p>Для небольших приложений предусмотрен бесплатный тариф Spark. Он включает в себя 5 ГБ облачного хранилища и 10 ГБ для хостинга. Функции индексации в поисковиках, тестирования, мониторинга производительности и отправки уведомлений бесплатны независимо от тарифа.</p>
31 <p>Firebase - универсальное решение для разработки серверной логики и хостинга приложений. Вот его основные фишки:</p>
31 <p>Firebase - универсальное решение для разработки серверной логики и хостинга приложений. Вот его основные фишки:</p>
32 <ul><li><strong>Скорость разработки.</strong>Бэкенд приложения можно собрать из готовых модулей и уделить больше времени разработке функций, дизайну или привлечению пользователей.</li>
32 <ul><li><strong>Скорость разработки.</strong>Бэкенд приложения можно собрать из готовых модулей и уделить больше времени разработке функций, дизайну или привлечению пользователей.</li>
33 <li><strong>Масштабируемость.</strong>Если приложение стало популярным и ресурсов не хватает для обеспечения бесперебойной работы, то система автоматически увеличит лимиты.</li>
33 <li><strong>Масштабируемость.</strong>Если приложение стало популярным и ресурсов не хватает для обеспечения бесперебойной работы, то система автоматически увеличит лимиты.</li>
34 <li><strong>Удобство.</strong>Для работы с Firebase не нужны глубокие знания программирования, а типовые схемы бэкенда можно собрать из шаблонов.</li>
34 <li><strong>Удобство.</strong>Для работы с Firebase не нужны глубокие знания программирования, а типовые схемы бэкенда можно собрать из шаблонов.</li>
35 </ul><p>Есть у платформы и ограничения, с которыми приходится мириться:</p>
35 </ul><p>Есть у платформы и ограничения, с которыми приходится мириться:</p>
36 <ul><li><strong>Доступна не во всех странах.</strong>Например, в Китае и некоторых других странах доступ к сервисам Google заблокирован. Firebase там тоже не будет работать.</li>
36 <ul><li><strong>Доступна не во всех странах.</strong>Например, в Китае и некоторых других странах доступ к сервисам Google заблокирован. Firebase там тоже не будет работать.</li>
37 <li><strong>Закрытые исходники.</strong>Firebase - коммерческий проект Google, поэтому компания не публикует исходный код. Изменить платформу под себя и переписать модули - не получится.</li>
37 <li><strong>Закрытые исходники.</strong>Firebase - коммерческий проект Google, поэтому компания не публикует исходный код. Изменить платформу под себя и переписать модули - не получится.</li>
38 <li><strong>Зависимость от Google.</strong>Если в какой-то момент вы захотите перейти на другое решение, то многое придётся создавать с нуля и решать проблемы совместимости сторонних модулей. Кроме того, Firebase привязана к Google Cloud. Разработчики не могут выбрать другого облачного провайдера.</li>
38 <li><strong>Зависимость от Google.</strong>Если в какой-то момент вы захотите перейти на другое решение, то многое придётся создавать с нуля и решать проблемы совместимости сторонних модулей. Кроме того, Firebase привязана к Google Cloud. Разработчики не могут выбрать другого облачного провайдера.</li>
39 <li><strong>Ограниченный тип баз данных.</strong>Платформа предлагает только NoSQL базы данных. Это может значительно усложнить миграцию проекта на другие решения.</li>
39 <li><strong>Ограниченный тип баз данных.</strong>Платформа предлагает только NoSQL базы данных. Это может значительно усложнить миграцию проекта на другие решения.</li>
40 </ul><p>Для примера разработаем простую страницу авторизации с помощью электронной почты и пароля. Подключим Firebase и рассмотрим основные шаги интеграции платформы с веб-приложением.</p>
40 </ul><p>Для примера разработаем простую страницу авторизации с помощью электронной почты и пароля. Подключим Firebase и рассмотрим основные шаги интеграции платформы с веб-приложением.</p>
41 <p>Сперва надо сверстать страницу с помощью HTML. Для этого в папке проекта создадим файл index.html и поместим в него код элементов: заголовка, полей ввода электронной почты и пароля и кнопку входа. Важно отметить, что ссылки на Firebase должны находиться до файла app.js:</p>
41 <p>Сперва надо сверстать страницу с помощью HTML. Для этого в папке проекта создадим файл index.html и поместим в него код элементов: заголовка, полей ввода электронной почты и пароля и кнопку входа. Важно отметить, что ссылки на Firebase должны находиться до файла app.js:</p>
42 &lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;meta charset="UTF-8" /&gt; &lt;title&gt;Firebase Authentication Example&lt;/title&gt; &lt;link rel="stylesheet" href="styles.css" /&gt; &lt;/head&gt; &lt;body&gt; &lt;h1&gt;Firebase Authentication Example&lt;/h1&gt; &lt;div id="signup"&gt; &lt;h2&gt;Sign Up&lt;/h2&gt; &lt;form id="signupForm"&gt; &lt;label for="signupEmail"&gt;Email:&lt;/label&gt; &lt;input type="email" id="signupEmail" required /&gt; &lt;label for="signupPassword"&gt;Password:&lt;/label&gt; &lt;input type="password" id="signupPassword" required /&gt; &lt;button type="submit"&gt;Sign Up&lt;/button&gt; &lt;/form&gt; &lt;/div&gt; &lt;div id="signin"&gt; &lt;h2&gt;Sign In&lt;/h2&gt; &lt;form id="signinForm"&gt; &lt;label for="signinEmail"&gt;Email:&lt;/label&gt; &lt;input type="email" id="signinEmail" required /&gt; &lt;label for="signinPassword"&gt;Password:&lt;/label&gt; &lt;input type="password" id="signinPassword" required /&gt; &lt;button type="submit"&gt;Sign In&lt;/button&gt; &lt;/form&gt; &lt;/div&gt; &lt;div id="message"&gt;&lt;/div&gt; &lt;script type="module" src="https://www.gstatic.com/firebasejs/9.6.6/firebase-app.js" &gt;&lt;/script&gt; &lt;script type="module" src="https://www.gstatic.com/firebasejs/9.6.6/firebase-auth.js" &gt;&lt;/script&gt; &lt;script type="module" src="app.js"&gt;&lt;/script&gt; &lt;/body&gt; &lt;/html&gt;<p>Основная страница на чистом HTML выглядит скучно и старомодно, поэтому сразу подключим к ней стили. Для этого в папке проекта создадим файл styles.css и пропишем шрифты, свойства выравнивания и цвета элементов на странице:</p>
42 &lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;meta charset="UTF-8" /&gt; &lt;title&gt;Firebase Authentication Example&lt;/title&gt; &lt;link rel="stylesheet" href="styles.css" /&gt; &lt;/head&gt; &lt;body&gt; &lt;h1&gt;Firebase Authentication Example&lt;/h1&gt; &lt;div id="signup"&gt; &lt;h2&gt;Sign Up&lt;/h2&gt; &lt;form id="signupForm"&gt; &lt;label for="signupEmail"&gt;Email:&lt;/label&gt; &lt;input type="email" id="signupEmail" required /&gt; &lt;label for="signupPassword"&gt;Password:&lt;/label&gt; &lt;input type="password" id="signupPassword" required /&gt; &lt;button type="submit"&gt;Sign Up&lt;/button&gt; &lt;/form&gt; &lt;/div&gt; &lt;div id="signin"&gt; &lt;h2&gt;Sign In&lt;/h2&gt; &lt;form id="signinForm"&gt; &lt;label for="signinEmail"&gt;Email:&lt;/label&gt; &lt;input type="email" id="signinEmail" required /&gt; &lt;label for="signinPassword"&gt;Password:&lt;/label&gt; &lt;input type="password" id="signinPassword" required /&gt; &lt;button type="submit"&gt;Sign In&lt;/button&gt; &lt;/form&gt; &lt;/div&gt; &lt;div id="message"&gt;&lt;/div&gt; &lt;script type="module" src="https://www.gstatic.com/firebasejs/9.6.6/firebase-app.js" &gt;&lt;/script&gt; &lt;script type="module" src="https://www.gstatic.com/firebasejs/9.6.6/firebase-auth.js" &gt;&lt;/script&gt; &lt;script type="module" src="app.js"&gt;&lt;/script&gt; &lt;/body&gt; &lt;/html&gt;<p>Основная страница на чистом HTML выглядит скучно и старомодно, поэтому сразу подключим к ней стили. Для этого в папке проекта создадим файл styles.css и пропишем шрифты, свойства выравнивания и цвета элементов на странице:</p>
43 body { font-family: Arial, sans-serif; margin: 0; padding: 0; } h1 { text-align: center; } #signup, #signin { width: 50%; margin: 0 auto; padding: 20px; border: 1px solid #ccc; border-radius: 5px; } form { display: flex; flex-direction: column; align-items: center; } label { margin-bottom: 10px; } input { padding: 5px; margin-bottom: 10px; border-radius: 5px; border: 1px solid #ccc; } button { padding: 5px 10px; background-color: #4caf50; color: white; border: none; border-radius: 5px; cursor: pointer; } button:hover { background-color: #3e8e41; } #message { text-align: center; margin-top: 20px; font-weight: bold; }<p>Страница авторизации готова, но если попробовать ввести данные и нажать на кнопку, то ничего не произойдёт. Всё дело в том, что нет скрипта, обрабатывающего логику приложения. Для этого надо подключить Firebase и добавить JavaScript-код.</p>
43 body { font-family: Arial, sans-serif; margin: 0; padding: 0; } h1 { text-align: center; } #signup, #signin { width: 50%; margin: 0 auto; padding: 20px; border: 1px solid #ccc; border-radius: 5px; } form { display: flex; flex-direction: column; align-items: center; } label { margin-bottom: 10px; } input { padding: 5px; margin-bottom: 10px; border-radius: 5px; border: 1px solid #ccc; } button { padding: 5px 10px; background-color: #4caf50; color: white; border: none; border-radius: 5px; cursor: pointer; } button:hover { background-color: #3e8e41; } #message { text-align: center; margin-top: 20px; font-weight: bold; }<p>Страница авторизации готова, но если попробовать ввести данные и нажать на кнопку, то ничего не произойдёт. Всё дело в том, что нет скрипта, обрабатывающего логику приложения. Для этого надо подключить Firebase и добавить JavaScript-код.</p>
44 Так выглядит интерфейс нашей страницы авторизации<em>Скриншот: Skillbox Media</em><p>Сперва надо создать Firebase-проект и зарегистрировать наше приложение. Это можно сделать с помощью кнопки Add project в <a>консоли управления</a>платформы. Для входа в Firebase понадобится аккаунт Google.</p>
44 Так выглядит интерфейс нашей страницы авторизации<em>Скриншот: Skillbox Media</em><p>Сперва надо создать Firebase-проект и зарегистрировать наше приложение. Это можно сделать с помощью кнопки Add project в <a>консоли управления</a>платформы. Для входа в Firebase понадобится аккаунт Google.</p>
45 Выбираем имя проекта<em>Скриншот:<a>Firebase</a>/ Skillbox Media</em><p>На следующем этапе система предложит подключить аналитику и другие дополнительные опции. В тестовом проекте они не нужны, поэтому этот шаг можно пропустить.</p>
45 Выбираем имя проекта<em>Скриншот:<a>Firebase</a>/ Skillbox Media</em><p>На следующем этапе система предложит подключить аналитику и другие дополнительные опции. В тестовом проекте они не нужны, поэтому этот шаг можно пропустить.</p>
46 Страница<em></em>подключения аналитики к проекту<em>Скриншот:<a>Firebase</a>/ Skillbox Media</em><p>После настройки откроется консоль управления проектом. С её помощью можно изменить параметры, конфигурацию и подключить сторонние интеграции. На этой же странице можно выбрать тип приложения, к которому следует подключить Firebase: веб, iOS, Android, Flutter или Unity.</p>
46 Страница<em></em>подключения аналитики к проекту<em>Скриншот:<a>Firebase</a>/ Skillbox Media</em><p>После настройки откроется консоль управления проектом. С её помощью можно изменить параметры, конфигурацию и подключить сторонние интеграции. На этой же странице можно выбрать тип приложения, к которому следует подключить Firebase: веб, iOS, Android, Flutter или Unity.</p>
47 Консоль управления Firebase-проектом<em>Скриншот:</em><a><em>Firebase</em></a><em>/ Skillbox Media</em><p>Мы создаём веб-страницу для авторизации, поэтому в консоли кликаем на иконку веб-проекта. После этого надо указать название, и можно сразу подключить хостинг от Firebase.</p>
47 Консоль управления Firebase-проектом<em>Скриншот:</em><a><em>Firebase</em></a><em>/ Skillbox Media</em><p>Мы создаём веб-страницу для авторизации, поэтому в консоли кликаем на иконку веб-проекта. После этого надо указать название, и можно сразу подключить хостинг от Firebase.</p>
48 Настройка интеграции Firebase с проектом<em>Скриншот:<a>Firebase</a>/ Skillbox Media</em><p>После нажимаем на кнопку Register и переходим к установке SDK. Это можно сделать с помощью пакетного менеджера NPM или тега &lt;script&gt; в коде разметки HTML. На этом же этапе система сгенерирует конфигурацию проекта. Она позже нам понадобится, поэтому лучше сразу скопировать её и сохранить.</p>
48 Настройка интеграции Firebase с проектом<em>Скриншот:<a>Firebase</a>/ Skillbox Media</em><p>После нажимаем на кнопку Register и переходим к установке SDK. Это можно сделать с помощью пакетного менеджера NPM или тега &lt;script&gt; в коде разметки HTML. На этом же этапе система сгенерирует конфигурацию проекта. Она позже нам понадобится, поэтому лучше сразу скопировать её и сохранить.</p>
49 Установка Firebase SDK<em>Скриншот:<a>Firebase</a>/ Skillbox Media</em><p>Теперь у нас есть всё необходимое, чтобы написать скрипт обработки событий на нашей странице авторизации. Для этого в папке проекта создадим файл app.js и вставим в него код и конфигурацию, которую мы скопировали из консоли Firebase:</p>
49 Установка Firebase SDK<em>Скриншот:<a>Firebase</a>/ Skillbox Media</em><p>Теперь у нас есть всё необходимое, чтобы написать скрипт обработки событий на нашей странице авторизации. Для этого в папке проекта создадим файл app.js и вставим в него код и конфигурацию, которую мы скопировали из консоли Firebase:</p>
50 // В данном случае мы не используем бандлеры, поэтому в импорте нужно указывать ссылки на веб-ресурсы Firebase import { initializeApp } from "https://www.gstatic.com/firebasejs/9.1.3/firebase-app.js"; import { getAuth, createUserWithEmailAndPassword, signInWithEmailAndPassword, } from "https://www.gstatic.com/firebasejs/9.1.3/firebase-auth.js"; // Это конфигурация Firebase, у каждого проекта она своя. Её нужно скопировать из консоли вашего проекта const firebaseConfig = { apiKey: "AIza......mvM", authDomain: "auth-e2356.firebaseapp.com", projectId: "auth-e2356", storageBucket: "auth-e2356.appspot.com", messagingSenderId: "589242158223", appId: "1:589242158223:web:45e......", }; const app = initializeApp(firebaseConfig); const auth = getAuth(app); const signupForm = document.getElementById("signupForm"); const signinForm = document.getElementById("signinForm"); const signupEmailInput = document.getElementById("signupEmail"); const signupPasswordInput = document.getElementById("signupPassword"); const signinEmailInput = document.getElementById("signinEmail"); const signinPasswordInput = document.getElementById("signinPassword"); const message = document.getElementById("message"); signupForm.addEventListener("submit", async (e) =&gt; { e.preventDefault(); const email = signupEmailInput.value; const password = signupPasswordInput.value; try { await createUserWithEmailAndPassword(auth, email, password); message.textContent = "Account created successfully!"; } catch (error) { message.textContent = error.message; } }); signinForm.addEventListener("submit", async (e) =&gt; { e.preventDefault(); const email = signinEmailInput.value; const password = signinPasswordInput.value; try { await signInWithEmailAndPassword(auth, email, password); message.textContent = "Logged in successfully!"; } catch (error) { message.textContent = error.message; } });<p>Код выше обрабатывает нажатия кнопок на странице и обменивается данными с Firebase. Он отвечает за регистрацию новых пользователей и проверят в базе данных существующих.</p>
50 // В данном случае мы не используем бандлеры, поэтому в импорте нужно указывать ссылки на веб-ресурсы Firebase import { initializeApp } from "https://www.gstatic.com/firebasejs/9.1.3/firebase-app.js"; import { getAuth, createUserWithEmailAndPassword, signInWithEmailAndPassword, } from "https://www.gstatic.com/firebasejs/9.1.3/firebase-auth.js"; // Это конфигурация Firebase, у каждого проекта она своя. Её нужно скопировать из консоли вашего проекта const firebaseConfig = { apiKey: "AIza......mvM", authDomain: "auth-e2356.firebaseapp.com", projectId: "auth-e2356", storageBucket: "auth-e2356.appspot.com", messagingSenderId: "589242158223", appId: "1:589242158223:web:45e......", }; const app = initializeApp(firebaseConfig); const auth = getAuth(app); const signupForm = document.getElementById("signupForm"); const signinForm = document.getElementById("signinForm"); const signupEmailInput = document.getElementById("signupEmail"); const signupPasswordInput = document.getElementById("signupPassword"); const signinEmailInput = document.getElementById("signinEmail"); const signinPasswordInput = document.getElementById("signinPassword"); const message = document.getElementById("message"); signupForm.addEventListener("submit", async (e) =&gt; { e.preventDefault(); const email = signupEmailInput.value; const password = signupPasswordInput.value; try { await createUserWithEmailAndPassword(auth, email, password); message.textContent = "Account created successfully!"; } catch (error) { message.textContent = error.message; } }); signinForm.addEventListener("submit", async (e) =&gt; { e.preventDefault(); const email = signinEmailInput.value; const password = signinPasswordInput.value; try { await signInWithEmailAndPassword(auth, email, password); message.textContent = "Logged in successfully!"; } catch (error) { message.textContent = error.message; } });<p>Код выше обрабатывает нажатия кнопок на странице и обменивается данными с Firebase. Он отвечает за регистрацию новых пользователей и проверят в базе данных существующих.</p>
51 <p>Firebase - облачная платформа с веб-интерфейсом, но во время разработки с ней удобнее работать через терминал. Для этого надо установить инструменты командной строки платформы с помощью пакетного менеджера NPM. Скопируйте команду ниже и запустите её в терминале вашего компьютера:</p>
51 <p>Firebase - облачная платформа с веб-интерфейсом, но во время разработки с ней удобнее работать через терминал. Для этого надо установить инструменты командной строки платформы с помощью пакетного менеджера NPM. Скопируйте команду ниже и запустите её в терминале вашего компьютера:</p>
52 npm install -g firebase-tools // Устанавливаем инструменты Firebase<p>Далее в терминале логинимся в Firebase с помощью команды firebase login и инициализируем проект. Для этого в папке проекта надо выполнить команду firebase init и ответить на вопросы, которые помогут всё настроить:</p>
52 npm install -g firebase-tools // Устанавливаем инструменты Firebase<p>Далее в терминале логинимся в Firebase с помощью команды firebase login и инициализируем проект. Для этого в папке проекта надо выполнить команду firebase init и ответить на вопросы, которые помогут всё настроить:</p>
53 ? Which Firebase features do you want to set up for this directory? Press Space to select features, then Enter to confirm your choices. ❯◯ Realtime Database: Configure a security rules file for Realtime Database and (optionally) provision default instance ◯ Firestore: Configure security rules and indexes files for Firestore ◯ Functions: Configure a Cloud Functions directory and its files ◯ Hosting: Configure files for Firebase Hosting and (optionally) set up GitHub Action deploys ◯ Hosting: Set up GitHub Action deploys ◯ Storage: Configure a security rules file for Cloud Storage (Move up and down to reveal more choices)<p>Готовый проект можно сразу же задеплоить. Для этого надо поместить все файлы в директорию public и в корне проекта запустить команду firebase deploy.</p>
53 ? Which Firebase features do you want to set up for this directory? Press Space to select features, then Enter to confirm your choices. ❯◯ Realtime Database: Configure a security rules file for Realtime Database and (optionally) provision default instance ◯ Firestore: Configure security rules and indexes files for Firestore ◯ Functions: Configure a Cloud Functions directory and its files ◯ Hosting: Configure files for Firebase Hosting and (optionally) set up GitHub Action deploys ◯ Hosting: Set up GitHub Action deploys ◯ Storage: Configure a security rules file for Cloud Storage (Move up and down to reveal more choices)<p>Готовый проект можно сразу же задеплоить. Для этого надо поместить все файлы в директорию public и в корне проекта запустить команду firebase deploy.</p>
54 <p>Проверим, всё ли работает. Для этого попробуем зарегистрировать нового пользователя. В блоке Sign Up введём адрес электронной почты, придумаем пароль и нажмём на кнопку.</p>
54 <p>Проверим, всё ли работает. Для этого попробуем зарегистрировать нового пользователя. В блоке Sign Up введём адрес электронной почты, придумаем пароль и нажмём на кнопку.</p>
55 Регистрируем нового пользователя<em>Скриншот: Skillbox Media</em><p>Если вы всё сделали правильно, то в консоли Firebase появятся данные нового пользователя.</p>
55 Регистрируем нового пользователя<em>Скриншот: Skillbox Media</em><p>Если вы всё сделали правильно, то в консоли Firebase появятся данные нового пользователя.</p>
56 Пользователь test@skillbox.ru успешно зарегистрировался<em>Скриншот:<a>Firebase</a>/ Skillbox Media</em><p>В документации Firebase есть<a>страница</a>с примерами проектов. С их помощью можно на практике изучить принципы работы с платформой. Важно учитывать, что многие примеры в руководстве рассчитаны на использование JavaScript-модулей, поэтому надо знать, как работают бандлеры (<a>Webpack</a>,<a>Rollup</a>и <a>ESBuild</a>).</p>
56 Пользователь test@skillbox.ru успешно зарегистрировался<em>Скриншот:<a>Firebase</a>/ Skillbox Media</em><p>В документации Firebase есть<a>страница</a>с примерами проектов. С их помощью можно на практике изучить принципы работы с платформой. Важно учитывать, что многие примеры в руководстве рассчитаны на использование JavaScript-модулей, поэтому надо знать, как работают бандлеры (<a>Webpack</a>,<a>Rollup</a>и <a>ESBuild</a>).</p>
57 <p>Помимо документации, разработчики Firebase предлагают большое количество обучающих ресурсов. К примеру, каждый год<a>проходит</a>конференция<a>Demo Day</a>с лекциями и гайдами по работе с Firebase.</p>
57 <p>Помимо документации, разработчики Firebase предлагают большое количество обучающих ресурсов. К примеру, каждый год<a>проходит</a>конференция<a>Demo Day</a>с лекциями и гайдами по работе с Firebase.</p>
58 <p>Ещё больше видео можно найти на <a>ютуб-канале</a>Firebase. Ответы на конкретные вопросы можно найти в тематическом<a>разделе</a>на Stack Overflow и в <a>рассылке</a>от разработчиков платформы.</p>
58 <p>Ещё больше видео можно найти на <a>ютуб-канале</a>Firebase. Ответы на конкретные вопросы можно найти в тематическом<a>разделе</a>на Stack Overflow и в <a>рассылке</a>от разработчиков платформы.</p>
59 <a>Курс с трудоустройством: "Профессия Python-разработчик + ИИ" Узнать о курсе</a>
59 <a>Курс с трудоустройством: "Профессия Python-разработчик + ИИ" Узнать о курсе</a>