برای شروع اجرای الزامات نشانه App Check در توابع قابل فراخوانی، عملکردهای خود را تغییر دهید تا نشانه های معتبر App Check را بررسی کنید، همانطور که در زیر نشان داده شده است. پس از فعال کردن اجرای، همه درخواستهای تأیید نشده رد میشوند.
Cloud Functions SDK را نصب کنید.
Node.js (نسل دوم)
وابستگی firebase-functions پروژه خود را به نسخه 4.0.0 یا جدیدتر به روز کنید:
npminstallfirebase-functions@">=4.0.0"
Node.js (نسل اول)
وابستگی firebase-functions پروژه خود را به نسخه 4.0.0 یا جدیدتر به روز کنید:
npminstallfirebase-functions@">=4.0.0"
پایتون (پیش نمایش)
افزودن firebase-functions به functions/requirements.txt :
firebase-functions >= 0.1.0
سپس، وابستگی ها را در محیط مجازی پروژه خود به روز کنید:
./venv/bin/pip install -r requirements.txt
گزینه App Check Enforcement Runtime را برای عملکرد خود فعال کنید:
Node.js (نسل دوم)
const{onCall}=require("firebase-functions/v2/https");exports.yourV2CallableFunction=onCall({enforceAppCheck:true,// Reject requests with missing or invalid App Check tokens.},(request)=>{// request.app contains data from App Check, including the app ID.// Your function logic follows....});
Node.js (نسل اول)
constfunctions=require("firebase-functions/v1");exports.yourV1CallableFunction=functions.runWith({enforceAppCheck:true,// Reject requests with missing or invalid App Check tokens.}).https.onCall((data,context)=>{// context.app contains data from App Check, including the app ID.// Your function logic follows....});
پایتون (پیش نمایش)
fromfirebase_functionsimporthttps_fn@https_fn.on_call(enforce_app_check=True# Reject requests with missing or invalid App Check tokens.)defyour_callable_function(req:https_fn.CallableRequest)-> https_fn.Response:# req.app contains data from App Check, including the app ID.# Your function logic follows....
توابع خود را مجدداً مستقر کنید:
firebase deploy --only functions
پس از اعمال این تغییرات، عملکردهای قابل فراخوانی شما به کدهای معتبر App Check نیاز دارند. هنگامی که یک تابع قابل فراخوانی را فراخوانی می کنید، کیت توسعه نرم افزاری سرویس گیرنده Cloud Functions به طور خودکار یک نشانه App Check را متصل می کند.
محافظت از پخش مجدد (بتا)
برای محافظت از یک تابع قابل فراخوانی در برابر حملات بازپخش، میتوانید رمز App Check را پس از تأیید آن مصرف کنید. پس از مصرف توکن، دیگر نمی توان از آن استفاده کرد.
توجه داشته باشید که استفاده از محافظت از پخش مجدد، یک رفت و برگشت شبکه را به تأیید رمز اضافه می کند و بنابراین تأخیر را به فراخوانی تابع اضافه می کند. به همین دلیل، اکثر برنامهها معمولاً محافظت از پخش مجدد را فقط در نقاط انتهایی حساس فعال میکنند.
برای مصرف توکن:
در کنسول Google Cloud ، نقش «بررسی تأیید کننده رمز برنامه Firebase» را به حساب سرویس مورد استفاده توسط این تابع اختصاص دهید.
اگر صراحتاً Admin SDK را مقداردهی اولیه میکنید و اعتبار حساب سرویس Admin SDK پروژه خود را مشخص کردهاید، نقش مورد نیاز قبلاً داده شده است.
اگر از نسل اول توابع Cloud با پیکربندی پیشفرض Admin SDK استفاده میکنید، این نقش را به حساب سرویس پیشفرض App Engine اختصاص دهید. به تغییر مجوزهای حساب سرویس مراجعه کنید.
اگر از نسل دوم توابع Cloud با پیکربندی پیشفرض Admin SDK استفاده میکنید، این نقش را به حساب خدمات محاسباتی پیشفرض اعطا کنید.
consumeAppCheckToken در تعریف تابع خود روی true تنظیم کنید:
Node.js (نسل دوم)
const{onCall}=require("firebase-functions/v2/https");exports.yourV2CallableFunction=onCall({enforceAppCheck:true,// Reject requests with missing or invalid App Check tokens.consumeAppCheckToken:true// Consume the token after verification.},(request)=>{// request.app contains data from App Check, including the app ID.// Your function logic follows....});
Node.js (نسل اول)
constfunctions=require("firebase-functions/v1");exports.yourV1CallableFunction=functions.runWith({enforceAppCheck:true,// Reject requests with missing or invalid App Check tokens.consumeAppCheckToken:true// Consume the token after verification.}).https.onCall((data,context)=>{// context.app contains data from App Check, including the app ID.// Your function logic follows....});
کد سرویس گیرنده برنامه خود را بهروزرسانی کنید تا هنگام فراخوانی عملکرد، توکنهای مصرفی محدود را به دست آورید:
تاریخ آخرین بهروزرسانی 2025-08-22 بهوقت ساعت هماهنگ جهانی.
[null,null,["تاریخ آخرین بهروزرسانی 2025-08-22 بهوقت ساعت هماهنگ جهانی."],[],[],null,["When you [understand how App Check will affect your users](/docs/app-check/monitor-functions-metrics)\nand you're ready to proceed, you can enable App Check enforcement for\n[callable functions](/docs/functions/callable).\n\nEnable enforcement\n\nTo begin enforcing App Check token requirements in your callable\nfunctions, modify your functions to check for valid App Check\ntokens, as shown below. Once you enable enforcement, all unverified requests\nwill be rejected.\n\n1. Install the Cloud Functions SDK.\n\n Node.js (2nd gen)\n\n Update your project's `firebase-functions` dependency to version 4.0.0 or\n newer: \n\n npm install firebase-functions@\"\u003e=4.0.0\"\n\n Node.js (1st gen)\n\n Update your project's `firebase-functions` dependency to version 4.0.0 or\n newer: \n\n npm install firebase-functions@\"\u003e=4.0.0\"\n\n Python (preview)\n\n Add `firebase-functions` to `functions/requirements.txt`: \n\n firebase-functions \u003e= 0.1.0\n\n Then, update the dependencies in your project's virtual environment: \n\n ./venv/bin/pip install -r requirements.txt\n\n2. Enable the App Check enforcement runtime option for your function:\n\n Node.js (2nd gen) \n\n const { onCall } = require(\"firebase-functions/v2/https\");\n\n exports.yourV2CallableFunction = onCall(\n {\n enforceAppCheck: true, // Reject requests with missing or invalid App Check tokens.\n },\n (request) =\u003e {\n // request.app contains data from App Check, including the app ID.\n // Your function logic follows.\n ...\n }\n );\n\n Node.js (1st gen) \n\n const functions = require(\"firebase-functions/v1\");\n\n exports.yourV1CallableFunction = functions\n .runWith({\n enforceAppCheck: true, // Reject requests with missing or invalid App Check tokens.\n })\n .https.onCall((data, context) =\u003e {\n // context.app contains data from App Check, including the app ID.\n // Your function logic follows.\n ...\n });\n\n Python (preview) \n\n from firebase_functions import https_fn\n\n @https_fn.on_call(\n enforce_app_check=True # Reject requests with missing or invalid App Check tokens.\n )\n def your_callable_function(req: https_fn.CallableRequest) -\u003e https_fn.Response:\n # req.app contains data from App Check, including the app ID.\n # Your function logic follows.\n ...\n\n3. Redeploy your functions:\n\n ```\n firebase deploy --only functions\n ```\n\nOnce these changes are deployed, your callable functions will require\nvalid App Check tokens. The Cloud Functions client SDKs automatically\nattach an App Check token when you invoke a callable function.\n\nReplay protection (beta)\n\nTo protect a callable function from replay attacks, you can consume the App\nCheck token after verifying it. Once the token is consumed, it cannot be used\nagain.\n| **Note:** The replay protection beta supports only the Cloud Functions SDK for Node.js.\n\nNote that using replay protection adds a network round trip to token\nverification, and therefore adds latency to the function call. For this\nreason, most apps typically enable replay protection only on particularly\nsensitive endpoints.\n\nTo consume tokens:\n\n1. In the\n [Google Cloud console](https://console.cloud.google.com/iam-admin/iam?project=_),\n grant the \"Firebase App Check Token Verifier\" role to the service account\n used by the function.\n\n - If you're explicitly initializing the Admin SDK and you specified your project's Admin SDK service account credentials, the required role is already granted.\n - If you're using 1st generation Cloud Functions with the default Admin SDK configuration, grant the role to the **App Engine default service\n account** . See [Changing service account permissions](https://cloud.google.com/appengine/docs/legacy/standard/python/service-account#modifying_the_default_service_account).\n - If you're using 2nd generation Cloud Functions with the default Admin SDK configuration, grant the role to the **Default compute service\n account**.\n2. Set `consumeAppCheckToken` to `true` in your function definition:\n\n Node.js (2nd gen) \n\n const { onCall } = require(\"firebase-functions/v2/https\");\n\n exports.yourV2CallableFunction = onCall(\n {\n enforceAppCheck: true, // Reject requests with missing or invalid App Check tokens.\n consumeAppCheckToken: true // Consume the token after verification.\n },\n (request) =\u003e {\n // request.app contains data from App Check, including the app ID.\n // Your function logic follows.\n ...\n }\n );\n\n Node.js (1st gen) \n\n const functions = require(\"firebase-functions/v1\");\n\n exports.yourV1CallableFunction = functions\n .runWith({\n enforceAppCheck: true, // Reject requests with missing or invalid App Check tokens.\n consumeAppCheckToken: true // Consume the token after verification.\n })\n .https.onCall((data, context) =\u003e {\n // context.app contains data from App Check, including the app ID.\n // Your function logic follows.\n ...\n });\n\n3. Update your app client code to acquire consumable limited-use tokens when\n you call the function:\n\n Swift \n\n let options = HTTPSCallableOptions(requireLimitedUseAppCheckTokens: true)\n let yourCallableFunction =\n Functions.functions().httpsCallable(\"yourCallableFunction\", options: options)\n do {\n let result = try await yourCallableFunction.call()\n } catch {\n // ...\n }\n\n Kotlin \n\n val yourCallableFunction = Firebase.functions.getHttpsCallable(\"yourCallableFunction\") {\n limitedUseAppCheckTokens = true\n }\n val result = yourCallableFunction.call().await()\n\n Java \n\n HttpsCallableReference yourCallableFunction = FirebaseFunctions.getInstance().getHttpsCallable(\n \"yourCallableFunction\",\n new HttpsCallableOptions.Builder()\n .setLimitedUseAppCheckTokens(true)\n .build()\n );\n Task\u003cHttpsCallableResult\u003e result = yourCallableFunction.call();\n\n Web \n\n import { getFunctions, httpsCallable } from \"firebase/functions\";\n\n const yourCallableFunction = httpsCallable(\n getFunctions(),\n \"yourCallableFunction\",\n { limitedUseAppCheckTokens: true },\n );\n await yourCallableFunction();"]]