Ключ API — это уникальная строка, используемая для маршрутизации запросов к вашему проекту Firebase при взаимодействии с сервисами Firebase и Google. На этой странице представлена основная информация о ключах API, а также рекомендации по использованию и управлению ключами API в приложениях Firebase.
Общая информация о ключах API и Firebase.
API-ключи для Firebase отличаются от обычных API-ключей.
В отличие от обычного использования ключей API, ключи API для сервисов Firebase не используются для управления доступом к ресурсам бэкэнда ; это можно сделать только с помощью Firebase Security Rules (для контроля доступа конечных пользователей к ресурсам) и Firebase App Check (для контроля доступа приложений к ресурсам).
Обычно ключи API необходимо тщательно защищать (например, используя службу хранилища или устанавливая ключи в качестве переменных окружения); однако ключи API для сервисов Firebase допустимо включать в код или в конфигурационные файлы, добавленные в репозиторий.
Хотя ключи API для сервисов Firebase можно безопасно включать в код, следует проверить их и применить соответствующие ограничения и лимиты .
Создание ключей API
В проекте Firebase может быть много ключей API, но каждый ключ API может быть связан только с одним проектом Firebase.

Firebase автоматически создает ключи API для вашего проекта при выполнении любого из следующих действий:
- Создайте проект Firebase >
Browser keyсоздан автоматически - Создание приложения Firebase для Apple > Автоматическое создание
iOS key - Создание Android-приложения Firebase > Автоматическое создание
Android key
Вы также можете создавать собственные API-ключи в консоли Google Cloud , например, для разработки или отладки . Подробнее о том, когда это может быть рекомендовано, читайте далее на этой странице.
Как найти свои API-ключи
Просмотреть и управлять всеми ключами API вашего проекта можно на панели «API и сервисы > Учетные данные» в консоли Google Cloud .
Вы также можете узнать, какой ключ API автоматически сопоставляется с приложением Firebase, в следующих местах. По умолчанию все приложения Firebase вашего проекта для одной и той же платформы (Apple, Android или Web) будут использовать один и тот же ключ API.
Firebase Apple Apps — Найдите автоматически подобранный ключ API в файле конфигурации Firebase,
, в полеGoogleService-Info.plist API_KEY.Приложения Firebase для Android — найдите автоматически подобранный ключ API в файле конфигурации Firebase,
, в полеgoogle-services.json current_key.Firebase Web Apps — Найдите автоматически подобранный ключ API в объекте конфигурации Firebase, в поле
apiKey.
Использование ключа API
Ключи API для Firebase используются для идентификации вашего проекта Firebase при взаимодействии с сервисами Firebase или Google. В частности, они используются для привязки запросов API к вашему проекту для управления квотами и выставления счетов. Они также полезны для доступа к общедоступным данным.
Для подавляющего большинства разработчиков и сценариев использования взаимодействие с этими API-ключами напрямую не требуется. Вместо этого, когда ваше приложение обращается к API Firebase, для которого требуется API-ключ, предоставленный мобильным или веб-клиентом, ваше приложение автоматически ищет API-ключ в конфигурации Firebase . Эта конфигурация была добавлена в код вашего приложения при подключении приложения к Firebase.
Обратите внимание, что вы можете указать API-ключ своего приложения внутри самого приложения, используя другой механизм, например, параметры Firebase или переменные окружения.
Кроме того, для некоторых REST API сервисов Firebase может потребоваться явная передача значения ключа API в качестве параметра запроса. В этом примере показано, как можно выполнить запрос с использованием API Firebase Authentication :
https://identitytoolkit.googleapis.com/v1/accounts:signInWithCustomToken?key=API_KEY
Проверьте и примените соответствующие ограничения к ключам API (рекомендуется).
Хотя ключ API для сервисов Firebase не обязательно рассматривать как секрет, следует ознакомиться с ограничениями и лимитами, описанными в этом разделе, и применить их.
Проверьте API, автоматически добавленные в список разрешенных для ваших ключей API Firebase.
Когда Firebase создает ключ API в вашем проекте, мы автоматически добавляем к этому ключу «Ограничения API» . В этот список разрешенных API добавляются API, связанные с Firebase, которые требуют от клиента предоставления ключа API вместе с вызовом. Обратите внимание, что большинству API, необходимых для использования сервисов Firebase, на самом деле не нужно включать в список разрешенных для ваших ключей API.
Поскольку Firebase добавляет необходимые API для всех сервисов Firebase, список разрешенных API для ключа API может включать API для продуктов, которые вы не используете. Вы можете удалить API из списка разрешенных, но должны быть очень осторожны, чтобы не удалить API, необходимые для Firebase и используемых вами сервисов Firebase (см. список API, связанных с Firebase , которые должны быть в списке разрешенных для каждого сервиса/продукта). В противном случае вы будете получать ошибки при вызове сервисов Firebase.
Усильте квоты, если используете Authentication на основе паролей.
Если вы используете Firebase Authentication на основе паролей и кто-то получит доступ к вашему API-ключу, он не сможет получить доступ к базе данных вашего проекта Firebase или данным Cloud Storage , пока эти данные защищены Firebase Security Rules . Однако он сможет использовать ваш API-ключ для доступа к конечным точкам аутентификации Firebase и отправлять запросы на аутентификацию в ваш проект.
Чтобы снизить вероятность злоупотребления ключом API для попытки атаки методом перебора, вы можете ужесточить квоту по умолчанию для конечных точек identitytoolkit.googleapis.com , чтобы она соответствовала ожидаемому трафику вашего приложения. Имейте в виду, что если вы ужесточите эту квоту и ваше приложение внезапно увеличит число пользователей, вы можете столкнуться с ошибками входа в систему, пока не увеличите квоту. Вы можете изменить квоты API вашего проекта в консоли Google Cloud .
Для любых сервисов, не относящихся к Firebase, используйте отдельные, ограниченные по доступу ключи API.
Хотя ключи API, используемые для сервисов Firebase, обычно не нужно рассматривать как секретные, следует проявлять дополнительную осторожность при работе с ключами API, используемыми с другими API Google Cloud .
Если вы используете API Google Cloud (на любой платформе), не предназначенный для сервиса/продукта Firebase, мы настоятельно рекомендуем создать отдельные, ограниченные по доступу ключи API для использования с этими API. Это особенно важно, если API предназначен для платного сервиса Google Cloud .
Например, если вы используете Firebase ML и API Cloud Vision на iOS, вам следует создать отдельные ключи API , которые вы будете использовать только для доступа к API Cloud Vision.
Используя отдельные, ограниченные по доступу ключи API для API, не относящихся к Firebase, вы можете при необходимости менять или заменять ключи и добавлять дополнительные ограничения к ключам API, не нарушая при этом использование сервисов Firebase.
В этих инструкциях описано, как создать отдельный, ограниченный по доступу ключ API для фиктивного API под названием Super Service API .
Шаг 1: Настройте существующие ключи API, чтобы запретить доступ к Super Service API
Откройте страницу «Учетные данные» в консоли Google Cloud . При появлении запроса выберите свой проект.
Для каждого существующего ключа API в списке откройте окно редактирования.
В разделе «Ограничения API» выберите «Ограничить ключ» , затем добавьте в список все API, к которым вы хотите предоставить доступ с помощью ключа API. Убедитесь, что вы не включили API, для которого создаете отдельный ключ API (в этом примере —
Super Service API).При настройке ограничений API для ключа API вы явно указываете API, к которым ключ имеет доступ. По умолчанию, если в разделе ограничений API выбран параметр «Не ограничивать ключ» , ключ API может использоваться для доступа к любому API, разрешенному для проекта.
Теперь ваши существующие API-ключи не будут предоставлять доступ к Super Service API , но каждый ключ продолжит работать для любых API, которые вы добавили в список ограничений API .
Шаг 2: Создайте и используйте новый ключ API для доступа к Super Service API
Вернитесь на страницу «Учетные данные» . Убедитесь, что ваш проект Firebase по-прежнему выбран.
Нажмите «Создать учетные данные» > «Ключ API» . Запишите новый ключ API, затем нажмите «Ограничить доступ к ключу» .
В разделе ограничений API выберите «Ограничить ключ» , затем добавьте в список только
Super Service API.Этот новый ключ API предоставляет доступ только к
Super Service API.Настройте ваше приложение и сервисы для использования нового ключа API.
Используйте API-ключи, специфичные для вашей среды (рекомендуется).
Если вы настраиваете разные проекты Firebase для разных сред, таких как тестовая и производственная, важно, чтобы каждый экземпляр приложения взаимодействовал со своим соответствующим проектом Firebase. Например, ваш экземпляр приложения для тестовой среды никогда не должен взаимодействовать с вашим производственным проектом Firebase. Это также означает, что ваше приложение для тестовой среды должно использовать ключи API, связанные с вашим тестовым проектом Firebase.
Чтобы уменьшить проблемы с переносом изменений кода из среды разработки в среду тестирования и далее в продакшн, вместо включения ключей API в сам код, можно установить их в качестве переменных окружения или добавить в конфигурационный файл.
Обратите внимание, что если вы используете Firebase Local Emulator Suite для разработки вместе с Firebase ML , вам необходимо создать и использовать ключ API только для отладки. Инструкции по созданию такого ключа можно найти в документации Firebase ML .
Часто задаваемые вопросы и устранение неполадок
Часто задаваемые вопросы
Да, по умолчанию ко всем API-ключам, которые Firebase автоматически предоставляет для использования с API, связанными с Firebase, автоматически применяются "ограничения API" . См. список API, связанных с Firebase , которые включены в этот список разрешенных.
В этот список разрешенных API добавлены те API, которые вызываются сервисами Firebase из клиентского кода и требуют наличия ключей API для идентификации вашего проекта или приложения Firebase. Обратите внимание, что большинству API, необходимых для использования сервисов Firebase, на самом деле не обязательно быть в списке разрешенных для ваших ключей API.
Поскольку Firebase добавляет необходимые API для всех сервисов Firebase, список разрешенных API для ключа API может включать API для продуктов, которые вы не используете. Вы можете удалить API из списка разрешенных, но должны быть очень осторожны, чтобы не удалить API, необходимые для Firebase и используемых вами сервисов Firebase (см. список API, связанных с Firebase , которые должны быть в списке разрешенных для каждого сервиса/продукта). В противном случае вы будете получать ошибки при вызове сервисов Firebase.
Все ваши API-ключи и связанные с ними «ограничения API» можно просмотреть на панели «API и сервисы » > «Учетные данные» в консоли Google Cloud .
Обратите внимание на следующее в отношении того, как Firebase применяет эти «ограничения API»:
Начиная с мая 2024 года, все новые ключи API, автоматически предоставляемые Firebase, будут автоматически ограничены списком API, связанных с Firebase .
В течение мая 2024 года все существующие и неограниченные ключи API, которые Firebase ранее автоматически предоставил, будут ограничены списком API, связанных с Firebase, а также любыми из API, которые в настоящее время включены в проект.
Все существующие и уже ограниченные ключи API, которые Firebase ранее автоматически предоставил, не были изменены.
Все существующие ключи API, которые не были автоматически предоставлены Firebase, не были изменены.
Для определения того, какой ключ API связан с вашим приложением Firebase, вы можете использовать любой из следующих вариантов:
Консоль Firebase
Перейдите в проекта , затем прокрутите вниз до карточки «Ваши приложения» .
Выберите интересующее вас приложение.
Получите файл конфигурации/объект Firebase для интересующего вас приложения, а затем найдите его ключ API:
Apple : Загрузите файл
GoogleService-Info.plistи найдите полеAPI_KEYAndroid : Загрузите файл
google-services.json, найдите конфигурационный файл для интересующего вас приложения (обратите внимание на имя пакета), а затем найдите полеcurrent_keyВеб : выберите пункт «Конфигурация» , а затем найдите поле
apiKey
Firebase CLI
Чтобы получить файл/объект конфигурации Firebase для интересующего вас приложения, выполните следующую команду:
firebase apps:sdkconfig PLATFORM FIREBASE_APP_ID
- PLATFORM (одна из):
IOS|ANDROID|WEB - FIREBASE_APP_ID : уникальный идентификатор, присвоенный Firebase вашему приложению Firebase ( найдите свой идентификатор приложения ).
- PLATFORM (одна из):
В распечатанном файле конфигурации Firebase найдите ключ API приложения:
Apple : Найдите поле
API_KEYAndroid : Найдите конфигурационный файл интересующего вас приложения (поищите имя пакета), а затем найдите поле
current_keyВеб : Найдите поле
apiKey
REST API
Получите
apiKeyId(UID) ключа API, вызвав соответствующую конечную точку для интересующего приложения, а затем передайте значениеapiKeyIdна следующий шаг.- Apple : Вызов
projects.iosApps.get - Android : Вызов
projects.androidApps.get - Веб : Вызов
projects.webApps.get
- Apple : Вызов
Чтобы получить строку ключа API, вызовите метод
projects.locations.keys.getKeyString.Значение этого
keyStringсовпадает со значением, которое можно найти в файле конфигурации приложения ( Apple | Android | Web ).
Firebase Apple Apps — Каждое приложение имеет свой собственный конфигурационный файл и может содержать только один ключ API.
Приложения Firebase для Android — Все приложения Android в проекте Firebase перечислены в одном и том же конфигурационном файле, и каждое приложение может иметь только один указанный ключ API. Однако в этом конфигурационном файле каждое приложение может иметь свой собственный ключ.
Firebase Web Apps — Каждое приложение имеет свой собственный объект конфигурации и может содержать только один указанный ключ API.
Однако вы можете использовать несколько ключей API в одном приложении. Вам необходимо предоставить механизм для доступа вашего приложения к этим другим ключам API, например, через переменную окружения. Механизм доступа к другим ключам API не должен зависеть от того, указаны ли эти ключи API в вашем конфигурационном файле/объекте Firebase.
При первом получении файла/объекта конфигурации Firebase вашего приложения Firebase проверяет, существуют ли в вашем проекте какие-либо ключи API с «ограничениями приложения» , соответствующими приложению (например, совпадающий идентификатор пакета для приложения Apple).
Если Firebase не обнаружит ни одного соответствующего ограниченного ключа, то в файле конфигурации/объекте будет указан iOS key для приложений Apple, Android key для приложений Android и Browser key для веб-приложений (при условии, что эти ключи существуют и не имеют «ограничений приложения», которые препятствовали бы их сопоставлению с данным приложением).
Да, вы можете вручную удалить свой API-ключ из файла конфигурации/объекта. Однако вам необходимо предоставить приложению другой механизм доступа к API-ключу (например, через переменную окружения). В противном случае любые вызовы к сервисам Firebase завершатся неудачей.
Да, вы можете вручную отредактировать файл конфигурации/объект, чтобы связать с приложением другой ключ API.
Обратите внимание, что если вы повторно получите файл конфигурации/объект вашего приложения из консоли, он всегда будет отображать ключи API, которые Firebase автоматически сопоставляет с этим приложением . Поэтому вам потребуется повторить ручные изменения по мере необходимости.
Нет, ключ API идентифицирует только конкретный проект и не может быть перенесен в другой проект.
Если вы удалите ключ API, используемый приложением, то вызовы API из этого приложения будут завершаться неудачей. Вы можете получать сообщения, электронные письма или ошибки о попытке использования недействительного ключа API.
Удаление ключа API является необратимым и не подлежит отмене.
Для ключа API Firebase в список разрешенных «ограничений API» должны быть включены только те API, которые требуют от клиента предоставления ключа API вместе с вызовом. Обратите внимание, что очень немногие API, связанные с Firebase, имеют это требование. Большинству API, связанных с Firebase и включенных в ваш проект, не нужно включать в список разрешенных «ограничений API» ключа.
Используйте следующую таблицу, чтобы определить, какие API, связанные с Firebase, необходимо включить в список разрешенных «Ограничения API» для ключа API Firebase. Помните, что ключи API Firebase следует использовать только для сервисов Firebase. Узнайте больше о создании отдельных ключей API с ограничениями для определенных типов API .
Вы можете просматривать и управлять ключами API вашего проекта на панели «API и сервисы > Учетные данные» в консоли Google Cloud .
| Название API (название сервиса) | отображаемое имя API | Ассоциированная база огня услуга / продукт |
|---|---|---|
| firebase.googleapis.com | API управления Firebase | все продукты |
| logging.googleapis.com | API облачного логирования | все продукты |
| firebaseinstallations.googleapis.com | API установок Firebase | Cloud Messaging , Crashlytics , In-App Messaging , Performance Monitoring , Remote Config , Firebase ML |
| firebaseappcheck.googleapis.com | API проверки приложений Firebase | App Check |
| firebaseappdistribution.googleapis.com | API распространения приложений Firebase | App Distribution |
| firebaseapptesters.googleapis.com | API для тестирования приложений Firebase | App Distribution |
| identitytoolkit.googleapis.com | API инструментария идентификации | Authentication |
| securetoken.googleapis.com | API службы токенов | Authentication |
| firebaserules.googleapis.com * | API правил Firebase | Cloud Firestore , Cloud Storage , Realtime Database |
| datastore.googleapis.com | API облачного хранилища данных | Cloud Firestore |
| firestore.googleapis.com | API Google Cloud Firestore | Cloud Firestore |
| fcmregistrations.googleapis.com | API регистрации FCM | Cloud Messaging |
| firebasestorage.googleapis.com | Облачное хранилище для Firebase API | Cloud Storage |
| firebasedynamiclinks.googleapis.com | API динамических ссылок Firebase | Dynamic Links |
| firebasehosting.googleapis.com * | API хостинга Firebase | Hosting |
| firebaseinappmessaging.googleapis.com | API для обмена сообщениями внутри приложений Firebase | In-App Messaging |
| firebaseml.googleapis.com | API машинного обучения Firebase | Firebase ML |
| mlkit.googleapis.com ** | ML Kit API | Firebase ML |
| mobilecrashreporting.googleapis.com | API для отправки отчетов о сбоях мобильных устройств | Performance Monitoring |
| play.googleapis.com | API для разработчиков Android в Google Play | Performance Monitoring |
| firebaseremoteconfig.googleapis.com | API удаленной конфигурации Firebase | Performance Monitoring , Remote Config |
| firebaseremoteconfigrealtime.googleapis.com | API Firebase Remote Config в реальном времени | Performance Monitoring , Remote Config |
| cloudconfig.googleapis.com ** | Н/Д | Remote Config |
| firebasedatabase.googleapis.com * | API базы данных реального времени Firebase | Realtime Database |
| firebasevertexai.googleapis.com | API Firebase AI Logic | SDK клиента Firebase AI Logic |
| fpnv.googleapis.com | API проверки номера телефона Firebase | Firebase Phone Number Verification |
* Требуется только в том случае, если вы используете ключ API Firebase со сторонними инструментами или осуществляете прямой REST-доступ к сервису/продукту Firebase.
**Требуется для более ранних версий SDK продукта. Если вы используете последнюю версию SDK, API не обязательно должен быть в списке разрешенных ключей.**
Поиск неисправностей
Если у вас возникает ошибка API_KEY_SERVICE_BLOCKED или ошибка, похожая на следующую, следуйте инструкциям в этом разделе часто задаваемых вопросов.
Forbidden: 403 POST https://example-service.googleapis.com/method: Requests to this API example-service.googleapis.com method google.example-service.rest.method are blocked.
Ключ API, используемый вашим приложением для вызова API, вероятно, имеет «ограничения API» , и в список разрешенных API этот ключ не входит.
Если вы получаете эту ошибку при попытке использовать сервис/продукт, связанный с Firebase, убедитесь, что используемый вами ключ API содержит все необходимые API, включенные в список разрешенных «ограничений API» .
Если вы получаете эту ошибку при попытке использовать сервис, не относящийся к Firebase , мы настоятельно рекомендуем создать новый ключ API специально для этого сервиса и API. Ключи API Firebase следует использовать только для сервисов/продуктов Firebase. Узнайте больше о создании отдельных, ограниченных ключей API для определенных типов API .
К ключу API, используемому вашим веб-приложением, вероятно, применяются "ограничения API" . В этом случае убедитесь, что Firebase Management API находится в списке разрешенных API.
Вот несколько наиболее распространенных причин недействительных ключей API:
К ключу API применяются «ограничения ключа API» , которые делают его непригодным для сопоставления с приложением, пытающимся использовать этот ключ («ограничения приложения»), или непригодным для вызываемого API («ограничения API»).
В консоли Google Cloud ключ API был удален из проекта.
Ключ API не был создан для идентификатора проекта, указанного в файле/объекте конфигурации Firebase приложения.
Один из способов решения этой проблемы — получить обновленную версию файла/объекта конфигурации Firebase вашего приложения , а затем заменить старый файл/объект конфигурации новым обновленным файлом/объектом. Перед отправкой файла конфигурации на загрузку или отображением объекта конфигурации в консоли Firebase проверяет, соответствуют ли указанные ключи API приложению (приложениям) .