Узнайте об использовании и управлении ключами API для Firebase.

Ключ 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.

Ключи API, автоматически созданные Firebase для ваших приложений 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

  1. Откройте страницу Credentials консоли Google Cloud . При появлении запроса выберите свой проект.

  2. Для каждого существующего ключа API в списке откройте представление редактирования.

  3. В разделе ограничений 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

  1. Вернитесь на страницу Credentials . Убедитесь, что ваш проект Firebase все еще выбран.

  2. Нажмите Создать учетные данные > API key . Запишите новый API key, затем нажмите Ограничить key .

  3. В разделе ограничений API выберите Ограничить ключ , затем добавьте в список только Super Service API .

    Этот новый ключ API предоставляет доступ только к Super Service API .

  4. Настройте свое приложение и службы для использования нового ключа 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

  1. Перейдите в Настройки проекта , а затем прокрутите страницу вниз до карточки Ваши приложения .

  2. Выберите интересующее вас приложение.

  3. Получите файл/объект конфигурации Firebase для интересующего вас приложения, а затем найдите его ключ API:

    • Apple : Загрузите GoogleService-Info.plist , а затем найдите поле API_KEY

    • Android : Загрузите google-services.json , найдите конфигурацию интересующего вас приложения (найдите имя пакета), а затем найдите поле current_key

    • Веб : выберите опцию «Конфигурация» , а затем найдите поле apiKey

Firebase CLI

  1. Получите файл/объект конфигурации Firebase для интересующего вас приложения, выполнив следующую команду:

    firebase apps:sdkconfig PLATFORM FIREBASE_APP_ID
  2. В распечатанной конфигурации Firebase приложения найдите его ключ API:

    • Apple : Найдите поле API_KEY

    • Android : найдите конфигурацию интересующего вас приложения (найдите имя пакета), а затем найдите поле current_key

    • Веб : Найдите поле apiKey

REST-API

  1. Получите apiKeyId (UID) ключа API, вызвав соответствующую конечную точку для интересующего приложения, а затем передав значение apiKeyId на следующий шаг.

  2. Получите строку ключа 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 отсутствует.

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.

Ключи API, автоматически созданные Firebase для ваших приложений 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

  1. Откройте страницу учетных данных консоли Google Cloud . При запросе выберите свой проект.

  2. Для каждого существующего ключа API в списке откройте представление редактирования.

  3. В разделе «Ограничения 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

  1. Вернитесь на страницу учетных данных . Убедитесь, что ваш проект Firebase все еще выбран.

  2. Нажмите «Создать учетные данные»> «Ключ API» . Обратите внимание на новый ключ API, затем нажмите «Ограничить клавишу» .

  3. В разделе «Ограничения API» выберите «Ограниченный ключ» , затем добавьте в список только Super Service API .

    Этот новый ключ API предоставляет доступ только к Super Service API .

  4. Настройте свое приложение и службы, чтобы использовать новый ключ 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

  1. Перейдите в настройки проекта , а затем прокрутите вниз до карты ваших приложений .

  2. Выберите приложение для интереса.

  3. Получите файл/объект конфигурации Firebase для приложения, представляющего интерес, а затем найдите его ключ API:

    • Apple : Загрузите GoogleService-Info.plist , а затем найдите поле API_KEY

    • Android : Загрузите google-services.json , найдите конфигурацию для приложения, представляющего интерес (ищите имя его пакета), а затем найдите поле current_key

    • Web : выберите опцию конфигурации , а затем найдите поле apiKey

Firebase Cli

  1. Получите файл/объект конфигурации Firebase для приложения, представляющего интерес, выполнив следующую команду:

    firebase apps:sdkconfig PLATFORM FIREBASE_APP_ID
  2. В печатной конфигурации Firebase приложения найдите его ключ API:

    • Apple : найдите поле API_KEY

    • Android : Найдите конфигурацию для приложения, представляющего интерес (ищите имя его пакета), а затем найдите поле current_key

    • Интернет : найти поле apiKey

REST-API

  1. Получите apiKeyId (UID) ключа API, вызывая применимую конечную точку для приложения, представляющего интерес, а затем передавая значение apiKeyId на следующий шаг.

  2. Получите строку ключа 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.

Ключ API, используемый вашим веб -приложением, вероятно, имеет примененные «ограничения API» . Если это так, убедитесь, что API управления Firebase Management находится в списке разрешенных API.

Вот несколько наиболее распространенных причин для недопустимых клавиш API:

  • Ключ API имеет «ограничения клавиш API», применяемые к нему, что делает его невозможным для приложения, пытающегося использовать ключ («Ограничения приложения») или непригодным для использования API («Ограничения API»).

  • Ключ API был удален из проекта в Google Cloud .

  • Ключ API не был создан для идентификатора проекта, указанного в файле/объекте приложения Firebase Config.

Один из способов исправить эту проблему - получить обновленную версию файла/объекта Config Firebase вашего приложения , а затем замените свой старый файл/объект конфигурации новым обновленным файлом/объектом. Перед отправкой файла конфигурации для загрузки или отображения объекта конфигурации в консоли Firebase проверяет, что ключ API (ы) перечисляет приложению (ы) .