Ключ 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
- Создать приложение Firebase Android >
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 — найдите автоматически сопоставленный ключ API в объекте конфигурации Firebase в поле
apiKey
.
Использование ключа API
Ключи API используются для идентификации вашего проекта Firebase при взаимодействии с сервисами Firebase/Google. В частности, они используются для связывания запросов API с вашим проектом для квоты и выставления счетов. Они также полезны для доступа к публичным данным.
Например, вы можете явно использовать ключ API, передав его значение в вызов REST API в качестве параметра запроса. В этом примере показано, как можно сделать запрос к API сокращения ссылок Dynamic Links :
POST https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=API_KEY
Когда ваше приложение делает вызов API Firebase, который требует API-ключа, предоставленного мобильным/веб-клиентом, ваше приложение автоматически ищет API-ключ вашего проекта в файле/объекте конфигурации Firebase. Однако вы можете предоставить API-ключи для своего приложения, используя другой механизм, включая переменные среды.
Просмотрите и примените соответствующие ограничения к ключам 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 .
Используйте отдельные, ограниченные ключи API для любых служб, не относящихся к Firebase.
Хотя ключи 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
Откройте страницу Credentials консоли 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
Вернитесь на страницу Credentials . Убедитесь, что ваш проект Firebase все еще выбран.
Нажмите Создать учетные данные > API key . Запишите новый API key, затем нажмите Ограничить key .
В разделе ограничений 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_KEY
Android : Загрузите
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_KEY
Android : найдите конфигурацию интересующего вас приложения (найдите имя пакета), а затем найдите поле
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 — каждое приложение имеет свой собственный файл конфигурации и может иметь только один указанный ключ API.
Приложения Firebase Android — Все приложения Android в проекте Firebase перечислены в одном и том же файле конфигурации, и каждое приложение может иметь только один указанный ключ API. Однако каждое приложение в этом файле конфигурации может иметь другой указанный ключ.
Веб-приложения Firebase — каждое приложение имеет собственный объект конфигурации и может иметь только один указанный ключ 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 вместе с вызовом. Обратите внимание, что очень немногие API, связанные с Firebase, имеют это требование. Большинство API, связанных с Firebase, включенных в вашем проекте, не должны быть в списке разрешенных "ограничений API" ключа.
Используйте следующую таблицу, чтобы определить, какие API, связанные с Firebase, необходимо включить в список разрешенных "ограничений API" для ключа Firebase API. Помните, ключи Firebase API следует использовать только для служб Firebase. Узнайте больше о создании отдельных ограниченных ключей API для определенных типов API .
Вы можете просматривать и управлять ключами API вашего проекта на панели API и службы > Учетные данные в консоли Google Cloud .
Имя API (имя сервиса) | Отображаемое имя API | Ассоциированная Firebase услуга/продукт |
---|---|---|
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 ** | API комплекта ML | 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 | Realtime Database |
firebasevertexai.googleapis.com | API логики Firebase AI | Клиентские SDK Firebase AI Logic |
* Требуется только в том случае, если вы используете ключ 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»).
Ключ API был удален из проекта в консоли Google Cloud .
Ключ API не был создан для идентификатора проекта, указанного в файле/объекте конфигурации Firebase приложения.
Один из способов исправить эту проблему — получить обновленную версию файла/объекта конфигурации Firebase вашего приложения , а затем заменить старый файл/объект конфигурации новым обновленным файлом/объектом. Перед отправкой файла конфигурации для загрузки или отображением объекта конфигурации в консоли Firebase проверяет, что перечисленные ключ(и) API соответствуют приложению(ям) .
,Ключ 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
- Создать приложение Firebase Android >
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 — найдите автоматически сопоставленный ключ API в объекте конфигурации Firebase в поле
apiKey
.
Использование ключа API
Ключи API используются для идентификации вашего проекта Firebase при взаимодействии с сервисами Firebase/Google. В частности, они используются для связывания запросов API с вашим проектом для квоты и выставления счетов. Они также полезны для доступа к публичным данным.
Например, вы можете явно использовать ключ API, передав его значение в вызов REST API в качестве параметра запроса. В этом примере показано, как можно сделать запрос к API сокращения ссылок Dynamic Links :
POST https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=API_KEY
Когда ваше приложение делает вызов API Firebase, который требует API-ключа, предоставленного мобильным/веб-клиентом, ваше приложение автоматически ищет API-ключ вашего проекта в файле/объекте конфигурации Firebase. Однако вы можете предоставить API-ключи для своего приложения, используя другой механизм, включая переменные среды.
Просмотрите и примените соответствующие ограничения к ключам 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 .
Используйте отдельные, ограниченные клавиши API для любой службы без фарбозы
Хотя клавиши API, используемые для служб Firebase, обычно не должны рассматриваться как секретные, вы должны принимать дополнительные меры предосторожности с клавишами API, которые вы используете с другими API Google Cloud .
Если вы используете API Google Cloud API (на любой платформе), который не предназначен для службы / продукта 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, который включен для проекта.
Теперь ваши существующие ключи 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. Например, ваш экземпляр Pating App никогда не должен разговаривать с вашим проектом Firebase Firebase. Это также означает, что ваше приложение для постановки необходимо использовать клавиши API, связанные с вашим проектом Firebase.
Чтобы уменьшить проблемы, пропагандирующие изменения кода от разработки до постановки до производства, вместо того, чтобы включать ключи API в сам код, либо установите их в качестве переменных среды, либо включите их в файл конфигурации.
Обратите внимание, что если вы используете Firebase Local Emulator Suite для разработки вместе с Firebase ML , вы должны создать и использовать ключ API только отладки. Инструкции по созданию такого рода ключа встречаются в документах Firebase ML .
Часто задаваемые вопросы и устранение неполадок
Часто задаваемые вопросы
Да, по умолчанию все клавиши API, которые автопроводы Firebase для использования с API, связанными с Firebase, имеют автоматически «ограничения API» . См. Список API, связанных с огненной базой , которые находятся в этом списке.
API, добавленные к этому разрешению, представляют собой те API, вызванные службами Firebase от клиентского кода, и требуют клавиш API для идентификации вашего проекта или приложения Firebase. Обратите внимание, что большинство API, необходимых для использования служб Firebase, на самом деле не нужно быть в списке Allist для ваших клавиш API.
Поскольку Firebase добавляет необходимые API для всех служб Firebase, AllistList для ключа API может включать API для продуктов, которые вы не используете. Вы можете удалить API-интерфейсы из AlluctList, но вы должны быть очень осторожны, чтобы не удалять API, необходимые для Firebase и используемых вами служб Firebase (см. Список API-интерфейсов, связанных с Firebase , которые должны быть в разрешении для каждого обслуживания / продукта). В противном случае вы получите ошибки при звонке в службы Firebase.
Вы можете просмотреть все свои ключи API и их «ограничения API» в панели API & Services > Drecatials в консоли Google Cloud .
Обратите внимание на следующее о том, как Firebase применяет эти «ограничения API»:
Начиная с мая 2024 года, все новые клавиши API, автоматические, автоматически ограничиваются списком API, связанных с Firebase .
В течение мая 2024 года все существующие и неограниченные клавиши API, которые Firebase ранее имела автоматическую эксплуатацию, ограничены списком API-интерфейсов, связанных с Firebase, плюс любой из API, включенных в настоящее время проекта.
Любые существующие и уже ограниченные клавиши API, которые Firebase ранее имела автоматическую эксплуатацию, не были изменены.
Любые существующие клавиши API, которые не были автоматическими пожарной базой, не были изменены.
Вы можете использовать любой из следующих вариантов, чтобы определить, какой ключ API связан с вашим приложением Firebase:
Консоль Firebase
Перейдите в настройки проекта , а затем прокрутите вниз до карты ваших приложений .
Выберите приложение для интереса.
Получите файл/объект конфигурации Firebase для приложения, представляющего интерес, а затем найдите его ключ API:
Apple : Загрузите
GoogleService-Info.plist
, а затем найдите полеAPI_KEY
Android : Загрузите
google-services.json
, найдите конфигурацию для приложения, представляющего интерес (ищите имя его пакета), а затем найдите полеcurrent_key
Web : выберите опцию конфигурации , а затем найдите поле
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_KEY
Android : Найдите конфигурацию для приложения, представляющего интерес (ищите имя его пакета), а затем найдите поле
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 ).
Приложения Apple Firebase - каждое приложение имеет свой собственный файл конфигурации и может иметь только один перечислен один ключ API.
Приложения Android Firebase - все приложения Android в проекте Firebase перечислены в одном файле конфигурации, и в каждом приложении может быть только один ключ API. Каждое приложение в этом файле конфигурации может иметь различный перечисленный ключ.
Веб -приложения Firebase - каждое приложение имеет свой собственный объект конфигурации и может иметь только один перечисленный ключ API.
Однако вы можете использовать несколько клавиш API с одним приложением. Вы должны предоставить для вашего приложения механизм для доступа к этим другим клавишам API, как через переменную среды. Механизм для доступа к другим клавишам API просто не может зависеть от тех ключей API, указанных в вашем файле/объекте Config Firebase.
Когда вы сначала получите файл/объект конфигурации Firebase вашего приложения , Firebase проверяет, есть ли в вашем проекте есть какие -либо ключи API, которые имеют «ограничения приложения» , которые соответствуют приложению (например, соответствующий идентификатор пакета для приложения Apple).
Если Firebase не найдет никаких ограниченных клавиш, которые соответствуют, то она будет перечислять в файле/объекте Config 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 вместе с вызовом. Обратите внимание, что очень немногие API, связанные с огненной базой, имеют это требование. Большинство API, связанных с огненной базой, включенными в вашем проекте, не должны находиться на «Ограничениях API API».
Используйте следующую таблицу, чтобы определить, какие API-интерфейсы, связанные с огненной базой, необходимо включить в «Ограничения API» разрешения для клавиши API Firebase. Помните, что клавиши API Firebase следует использовать только для служб Firebase. Узнайте больше о создании отдельных, ограниченных клавиш API для конкретных типов API .
Вы можете просматривать и управлять ключами API вашего проекта в панели API & Services > Delicents Console Google Cloud Console.
Имя API (имя службы) | API отображаемое имя | Асвязанная пожарная база услуга / продукт |
---|---|---|
firebase.googleapis.com | API управления Firebase | Все продукты |
logging.googleapis.com | Облачный журнал API | Все продукты |
firebaseinstallations.googleapis.com | Установка Firebase API | Cloud Messaging , Crashlytics , In-App Messaging , Performance Monitoring , Remote Config , Firebase ML |
firebaseappcheck.googleapis.com | API проверки приложений Firebase API | App Check |
FireBaseAppDistribution.googleApis.com | API распределения приложений Firebase | App Distribution |
firebaseapptesters.googleapis.com | API тестировщики приложений Firebase | App Distribution |
IdentityToolkit.googleApis.com | Identity Toolkit API | Authentication |
secureToken.googleApis.com | Токен обслуживание API | Authentication |
firebaserules.googleapis.com * | Правила Firebase API | Cloud Firestore , Cloud Storage , Realtime Database |
DataStore.googleApis.com | Облачный данных API | Cloud Firestore |
Firestore.googleapis.com | Google Cloud Firestore API | Cloud Firestore |
fcmregistration.googleapis.com | FCM Регистрация API | Cloud Messaging |
Firebasestorage.googleapis.com | Облачное хранилище для API Firebase | Cloud Storage |
FireBasedynamiclinks.googleapis.com | Dynamic Links Firebase API | Dynamic Links |
firebasehosting.googleapis.com * | Firebase Hosting API | Hosting |
firebaseinappmessaging.googleapis.com | API обмена сообщениями в приложении Firebase | In-App Messaging |
Firebaseml.googleapis.com | Firebase ML API | Firebase ML |
mlkit.googleapis.com ** | ML Kit API | Firebase ML |
MobileCrashRashPorting.googleApis.com | Mobile Crash Reporting API | Performance Monitoring |
play.googleapis.com | Google Play Android Developer API | Performance Monitoring |
Firebaseremoteconfig.googleapis.com | Удаленная конфигурация Firebase | Performance Monitoring , Remote Config |
Firebaseremoteconfigrealtime.googleapis.com | Удаленная конфигурация Firebase Realtime API | Performance Monitoring , Remote Config |
CloudConfig.googleApis.com ** | Н/Д | Remote Config |
firebasedatabase.googleapis.com * | API базы данных Firebase Realtime API | Realtime Database |
Firebasevertexai.googleapis.com | Firebase AI Logic API | Клиентские SDK Firebase AI Logic |
* Требуется только в том случае, если вы используете ключ API Firebase API со сторонними инструментами или прямолинейным доступом к обслуживанию / продукту Firebase.
** Требуется для более ранних версий SDK продукта. Если вы используете последнюю версию SDK, API не должен быть в списке Allucts.
Поиск неисправностей
Следуйте руководству в этом FAQ, если вы получаете ошибку 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 API» .
Если вы получаете эту ошибку при попытке использовать службу без фарбазы , то мы настоятельно рекомендуем создать новый ключ API специально для этой службы и API. Ключи API Firebase следует использовать только для служб / продуктов Firebase. Узнайте больше о создании отдельных, ограниченных клавиш API для конкретных типов API .
Ключ API, используемый вашим веб -приложением, вероятно, имеет примененные «ограничения API» . Если это так, убедитесь, что API управления Firebase Management находится в списке разрешенных API.
Вот несколько наиболее распространенных причин для недопустимых клавиш API:
Ключ API имеет «ограничения клавиш API», применяемые к нему, что делает его невозможным для приложения, пытающегося использовать ключ («Ограничения приложения») или непригодным для использования API («Ограничения API»).
Ключ API был удален из проекта в Google Cloud .
Ключ API не был создан для идентификатора проекта, указанного в файле/объекте приложения Firebase Config.
Один из способов исправить эту проблему - получить обновленную версию файла/объекта Config Firebase вашего приложения , а затем замените свой старый файл/объект конфигурации новым обновленным файлом/объектом. Перед отправкой файла конфигурации для загрузки или отображения объекта конфигурации в консоли Firebase проверяет, что ключ API (ы) перечисляет приложению (ы) .