Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

Включить проверку приложений для облачных функций

Оптимизируйте свои подборки Сохраняйте и классифицируйте контент в соответствии со своими настройками.

Когда вы поймете, как проверка приложений повлияет на ваших пользователей , и будете готовы продолжить, вы можете включить принудительную проверку приложений.

Чтобы начать применять требования к токену проверки приложений в вызываемых облачных функциях, измените свои функции, чтобы они проверяли действительные токены проверки приложений, как показано ниже. После включения принудительного применения все неподтвержденные запросы будут отклонены.

  1. Обновите зависимость firebase firebase-functions вашего проекта до версии 3.14.0 или новее:

    npm install firebase-functions@">=3.14.0"
    

    И обновите зависимость firebase firebase-admin вашего проекта до версии 9.8.0 или новее:

    npm install firebase-admin@">=9.8.0"
    
  2. Добавьте проверку для context.app в вашу функцию. Ваша функция должна завершиться ошибкой, если context.app не определен.

    exports.yourCallableFunction = functions.https.onCall((data, context) => {
      // context.app will be undefined if the request doesn't include an
      // App Check token. (If the request includes an invalid App Check
      // token, the request will be rejected with HTTP error 401.)
      if (context.app == undefined) {
        throw new functions.https.HttpsError(
            'failed-precondition',
            'The function must be called from an App Check verified app.')
      }
    
      // Your function logic follows.
    });
    
  3. (Необязательно) Если вы хотите обрабатывать недопустимые токены проверки приложений с помощью собственной логики (например, если вы хотите временно регистрировать, а не отклонять недопустимые запросы перед включением полного принудительного применения), установите для allowInvalidAppCheckToken значение true :

    exports.yourCallableFunction = functions.
      .runWith({
        allowInvalidAppCheckToken: true  // Opt-out: Requests with invalid App
                                         // Check tokens continue to your code.
      })
      .https.onCall((data, context) => {
        // Now, requests with an invalid App Check token are not rejected.
        //
        // context.app will be undefined if the request:
        //   1) Does not include an App Check token
        //   2) Includes an invalid App Check token
        if (context.app == undefined) {
          // You can inspect the raw request header to check whether an App
          // Check token was provided in the request. If you're not ready to
          // fully enable App Check yet, you could log these conditions instead
          // of throwing errors.
          const rawToken = context.rawRequest.header['X-Firebase-AppCheck'];
          if (rawToken == undefined) {
            throw new functions.https.HttpsError(
                'failed-precondition',
                'The function must be called from an App Check verified app.'
            );
          } else {
            throw new functions.https.HttpsError(
                'unauthenticated',
                'Provided App Check token failed to validate.'
            );
          }
        }
    
        // Your function logic follows.
      });
    

    Чтобы включить полную защиту App Check, задайте для allowInvalidAppCheckToken значение false .

  4. Перераспределите свои функции:

    firebase deploy --only functions
    

После развертывания этих изменений вашим вызываемым облачным функциям потребуются действительные токены проверки приложений. Клиентские SDK Cloud Functions автоматически прикрепляют токен проверки приложений при вызове вызываемой функции.