На этой странице вы найдете помощь в устранении неполадок и ответы на часто задаваемые вопросы об использовании Firebase Authentication . Если вы не можете найти то, что ищете, или вам нужна дополнительная помощь, обратитесь в службу поддержки Firebase .
Чтобы защитить свой проект от перегрузки SMS-трафика и злоупотребления API, выполните следующие шаги:
Рассмотрите возможность настройки политики региональных ограничений для SMS-сообщений.
Просмотрите данные об использовании SMS в вашем регионе .
Ищите регионы с очень большим количеством отправленных SMS и очень малым количеством (или нулевым) подтвержденных SMS. Соотношение подтвержденных/отправленных SMS — это ваш показатель успешности. Здоровый показатель успешности обычно находится в диапазоне 70-85%, поскольку SMS не является протоколом с гарантированной доставкой, и в некоторых регионах могут наблюдаться злоупотребления. Показатель успешности ниже 50% означает большое количество отправленных SMS, но мало успешных входов в систему, что является распространенным признаком злоумышленников и искусственного завышения SMS-трафика.
Используйте политику региональных SMS-сообщений , чтобы либо запрещать SMS-сообщения из регионов с низкой вероятностью успеха, либо разрешать их только в том случае, если ваше приложение предназначено для распространения исключительно на определенных рынках.
Ограничьте количество разрешенных доменов аутентификации.
Используйте панель настроек аутентификации для управления авторизованными доменами. Домен localhost по умолчанию добавляется в список разрешенных доменов аутентификации для упрощения разработки. Рекомендуется удалить localhost из списка авторизованных доменов в вашем рабочем проекте, чтобы предотвратить запуск кода злоумышленниками на своих localhost для доступа к вашему рабочему проекту.
Включить и обеспечить App Check
Включите App Check , чтобы защитить свой проект от злоупотреблений API, подтвердив, что запросы поступают только от приложений, связанных с вашим проектом.
Для использования App Check с Firebase Authentication необходимо обновить аутентификацию до Firebase Authentication with Identity Platform .
Помните, что вам необходимо включить проверку Authentication App Check в консоли Firebase (рекомендуется отслеживать трафик перед включением проверки). Также дважды проверьте список одобренных сайтов reCAPTCHA Enterprise , чтобы убедиться, что он содержит только ваши рабочие сайты, и что список приложений, зарегистрированных в вашем проекте в App Check является корректным.
Обратите внимание, что App Check помогает защититься от автоматизированных атак, утверждая, что вызов поступает из одного из ваших зарегистрированных приложений. Она не предотвращает использование пользователями вашего приложения непредусмотренным образом (например, запуск, а затем незавершение процессов авторизации для отправки SMS).
В настоящее время перенос номеров между операторами связи приведет к тому, что все SMS-сообщения станут недоступны для этих конечных пользователей. Обходного пути нет, и Firebase работает над решением этой проблемы.
Если у вас возникает следующая ошибка, выполните действия по устранению неполадок, описанные в этом разделе часто задаваемых вопросов:
GoogleFragment: Google sign in failed
com.google.android.gms.common.api.ApiException: 13: Unable to get token.
at
com.google.android.gms.internal.auth-api.zbay.getSignInCredentialFromIntent(com.google.android.gms:play-services-auth@@20.3.0:6)
Убедитесь, что вход через Google корректно включен в качестве поставщика аутентификации:
В консоли Firebase откройте раздел Authentication .
На вкладке «Способ входа» отключите, а затем снова включите способ входа через Google (даже если он уже включен):
Откройте способ входа через Google , отключите его, а затем нажмите «Сохранить» .
Снова откройте способ входа через Google , активируйте его и нажмите «Сохранить» .
Убедитесь, что ваше приложение использует актуальный конфигурационный файл Firebase (
google-services.json).
Получите конфигурационный файл вашего приложения.Проверьте, сохраняется ли ошибка. Если да, перейдите к следующему шагу устранения неполадок.
Убедитесь, что необходимые базовые клиенты OAuth 2.0 присутствуют.
На странице «Учетные данные» в консоли Google Cloud найдите раздел «Идентификаторы клиентов OAuth 2.0» .
Если клиенты OAuth 2.0 отсутствуют (и вы выполнили все описанные выше шаги по устранению неполадок), обратитесь в службу поддержки .
Если у вас возникает следующая ошибка, выполните действия по устранению неполадок, описанные в этом разделе часто задаваемых вопросов:
You must specify |clientID| in |GIDConfiguration|
Убедитесь, что вход через Google корректно включен в качестве поставщика аутентификации:
В консоли Firebase откройте раздел Authentication .
На вкладке «Способ входа» отключите, а затем снова включите способ входа через Google (даже если он уже включен):
Откройте способ входа через Google , отключите его, а затем нажмите «Сохранить» .
Снова откройте способ входа через Google , активируйте его и нажмите «Сохранить» .
Убедитесь, что ваше приложение использует актуальный конфигурационный файл Firebase (
GoogleService-Info.plist).
Получите конфигурационный файл вашего приложения.Проверьте, сохраняется ли ошибка. Если да, перейдите к следующему шагу устранения неполадок.
Убедитесь, что необходимые базовые клиенты OAuth 2.0 присутствуют.
На странице «Учетные данные» в консоли Google Cloud найдите раздел «Идентификаторы клиентов OAuth 2.0» .
Если клиенты OAuth 2.0 отсутствуют (и вы выполнили все описанные выше шаги по устранению неполадок), обратитесь в службу поддержки .
Если у вас возникает следующая ошибка, выполните действия по устранению неполадок, описанные в этом разделе часто задаваемых вопросов:
AuthErrorCode.INVALID_OAUTH_CLIENT_ID
Убедитесь, что вход через Google корректно включен в качестве поставщика аутентификации:
В консоли Firebase откройте раздел Authentication .
На вкладке «Способ входа» отключите, а затем снова включите способ входа через Google (даже если он уже включен):
Откройте способ входа через Google , отключите его, а затем нажмите «Сохранить» .
Снова откройте способ входа через Google , активируйте его и нажмите «Сохранить» .
Кроме того, в разделе «Аутентификация» в настройках поставщика Authentication Google убедитесь, что идентификатор клиента OAuth и секретный ключ совпадают с данными веб-клиента, отображаемыми на странице «Учетные данные» в консоли Google Cloud (см. раздел «Идентификаторы клиентов OAuth 2.0 »).
Если у вас возникает следующая ошибка, выполните действия по устранению неполадок, описанные в этом разделе часто задаваемых вопросов:
This domain YOUR_REDIRECT_DOMAIN is not authorized to run this operation.
Вероятнее всего, эта ошибка вызвана тем, что ваш домен перенаправления не указан в списке авторизованных доменов для Firebase Authentication , или же используемый вами ключ API для службы Firebase Authentication недействителен.
Для начала убедитесь, что YOUR_REDIRECT_DOMAIN находится в списке авторизованных доменов для вашего проекта Firebase. Если ваш домен перенаправления уже указан в этом списке, перейдите к устранению неполадок, связанных с недействительным ключом API.
По умолчанию Firebase Authentication JS SDK использует ключ API для вашего проекта Firebase, обозначенный как Browser key , и применяет его для проверки корректности URL-адреса перенаправления при входе в систему в соответствии со списком авторизованных доменов. Ключ API Authentication получается в зависимости от способа доступа к SDK Authentication :
Если вы используете предоставляемые Hosting вспомогательные функции аутентификации для авторизации пользователей с помощью Authentication JS SDK, то Firebase автоматически получает ваш API-ключ вместе с остальной конфигурацией Firebase каждый раз при развертывании на Firebase Hosting . Убедитесь, что параметр
authDomainвfirebaseConfigвашего веб-приложения правильно настроен для использования одного из доменов этого сайта Hosting . Вы можете проверить это, перейдя поhttps:// authDomain __/firebase/init.jsonи убедившись, чтоprojectIdсовпадает с projectId из вашейfirebaseConfig.Если вы размещаете код авторизации на собственном сервере , то можете использовать файл
__/firebase/init.jsonдля предоставления конфигурации Firebase для вспомогательного механизма перенаправления JS SDK Authentication размещенного на собственном сервере. Ключ API иprojectId, указанные в этом файле конфигурации, должны совпадать сfirebaseConfigвашего веб-приложения .
Убедитесь, что этот ключ API не был удален: перейдите в панель «API и сервисы» > «Учетные данные» в консоли Google Cloud , где перечислены все ключи API для вашего проекта.
Если
Browser keyне был удален, проверьте следующее:Убедитесь, что API Firebase Authentication включен в список разрешенных API для доступа с помощью ключа ( подробнее об ограничениях API для ключей API ).
Если вы размещаете код авторизации на собственном сервере, убедитесь, что ключ API, указанный в файле
__/firebase/init.jsonсовпадает с ключом API в консоли Google Cloud . При необходимости исправьте ключ в файле, а затем повторно разверните приложение.Если
Browser keyбыл удален, вы можете попросить Firebase сгенерировать для вас новый ключ API: в консоли Firebase перейдите по следующему пути:> Настройки проекта , затем в разделе «Ваши приложения» щелкните по своему веб-приложению. Это действие автоматически создаст ключ API, который вы сможете увидеть в разделе «Настройка и конфигурация SDK» для вашего веб-приложения.
Обратите внимание, что в консоли Google Cloud этот новый ключ API будет называться не
Browser key», а тем же именем, что и псевдоним вашего веб-приложения Firebase. Если вы решите добавить ограничения API для этого нового ключа API, убедитесь, что API Firebase Authentication находится в списке разрешенных API.После создания нового API-ключа выполните следующие необходимые действия:
Если вы используете зарезервированные URL-адреса Hosting , переразверните ваше приложение в Firebase, чтобы оно могло автоматически получить новый ключ API вместе с остальной конфигурацией Firebase.
Если вы размещаете код авторизации на собственном сервере , скопируйте новый ключ API и добавьте его в файл
__/firebase/init.json, а затем повторно разверните приложение.
Откройте страницу «Учетные данные» в консоли Google Cloud .
В верхней части страницы выберите «Создать учетные данные» > «Идентификатор клиента OAuth» .
Если вам будет предложено настроить экран согласия, следуйте инструкциям на экране, а затем перейдите к следующим шагам в этом разделе часто задаваемых вопросов.
Создайте веб-клиент OAuth:
В поле «Тип приложения» выберите «Веб-приложение» .
В поле «Авторизованные источники JavaScript» добавьте следующее:
-
http://localhost -
http://localhost:5000 -
https:// PROJECT_ID .firebaseapp.com -
https:// PROJECT_ID .web.app
-
В поле «Авторизованные URI перенаправления» добавьте следующее:
-
https:// PROJECT_ID .firebaseapp.com/__/auth/handler -
https:// PROJECT_ID .web.app/__/auth/handler
-
Сохраните клиент OAuth.
Скопируйте новый идентификатор клиента OAuth и секретный ключ клиента в буфер обмена.
В консоли Firebase откройте раздел Authentication .
На вкладке «Способ входа» откройте поставщика авторизации Google , а затем вставьте идентификатор клиента веб-сервера и секретный ключ, которые вы только что создали и скопировали из консоли Google Cloud . Нажмите «Сохранить» .
До декабря 2022 года поле %APP_NAME% в шаблоне электронного письма заполнялось именем бренда OAuth, которое автоматически создавалось при регистрации Android-приложения в проекте Firebase. Теперь, поскольку имя бренда OAuth создается только при включенном входе через Google, ниже описано, как определяется поле %APP_NAME% :
Если название бренда OAuth доступно, то
%APP_NAME%в шаблоне электронного письма будет содержать название бренда OAuth (так же, как и до декабря 2022 года).Если название бренда OAuth недоступно , вот как определяется
%APP_NAME%в шаблоне электронного письма:Для веб-приложений
%APP_NAME%будет представлять собой имя сайта Firebase Hosting по умолчанию (значение, предшествующее.firebaseapp.comи.web.app, и обычно идентификатор проекта Firebase).Для мобильных приложений:
Если в запросе присутствует имя пакета Android или идентификатор пакета iOS, то
%APP_NAME%будет представлять собой имя приложения, используемое в Play Store или App Store (соответственно).В противном случае
%APP_NAME%будет представлять собой имя сайта Firebase Hosting по умолчанию (значение, предшествующее.firebaseapp.comи.web.app, и обычно идентификатор проекта Firebase).
Обратите внимание, что если поиск имени сайта Firebase Hosting по умолчанию не удается, то в качестве запасного варианта используется идентификатор проекта Firebase в качестве
%APP_NAME%.