۱. مقدمه
بررسی برنامه Firebase با اطمینان از اینکه درخواستها از برنامهها و دستگاههای قانونی میآیند، به محافظت از منابع backend شما در برابر سوءاستفاده، مانند کلاهبرداری در صورتحساب و فیشینگ، کمک میکند. این سرویس با سرویسهای Firebase و سرویسهای backend شما کار میکند تا منابع شما را ایمن نگه دارد.
میتوانید اطلاعات بیشتری در مورد Firebase App Check را در مستندات Firebase بیابید.
App Check از سرویسهای مخصوص پلتفرم برای تأیید صحت یک برنامه و/یا دستگاه استفاده میکند. این سرویسها ، ارائهدهندگان گواهی نامیده میشوند. یکی از این ارائهدهندگان، سرویس App Attest اپل است که App Check میتواند از آن برای تأیید صحت برنامهها و دستگاههای اپل استفاده کند.
آنچه خواهید ساخت
در این آزمایشگاه کد، شما App Check را در یک برنامه نمونه موجود اضافه و اجرا خواهید کرد تا پایگاه داده Realtime پروژه از دسترسی برنامهها و دستگاههای غیرمجاز محافظت شود.
آنچه یاد خواهید گرفت
- نحوه اضافه کردن Firebase App Check به یک برنامه موجود.
- نحوه نصب ارائه دهندگان مختلف گواهی بررسی برنامه Firebase.
- نحوه پیکربندی App Attest برای برنامه شما.
- نحوه پیکربندی ارائه دهنده گواهی اشکال زدایی برای آزمایش برنامه شما روی شبیه سازها در حین توسعه برنامه.
آنچه نیاز دارید
- Xcode نسخه ۱۳.۳.۱ یا بالاتر
- یک حساب توسعهدهنده اپل که به شما امکان میدهد شناسههای برنامه جدید ایجاد کنید
- یک دستگاه iOS/iPadOS که از App Attest پشتیبانی میکند (درباره در دسترس بودن API App Attest اطلاعات کسب کنید)
۲. پروژه اولیه را دریافت کنید
مخزن Firebase Quickstarts برای iOS شامل برنامههای نمونه برای نمایش محصولات مختلف Firebase است. شما از برنامه Firebase Database Quickstart برای SwiftUI به عنوان پایه این آزمایشگاه کد استفاده خواهید کرد.
مخزن Firebase Quickstarts for iOS را از خط فرمان کلون کنید:
git clone https://github.com/firebase/quickstart-ios.git cd quickstart-ios
پروژه برنامه Quickstart مربوط به Realtime Database SwiftUI را در Xcode باز کنید:
cd database/DatabaseExampleSwiftUI/DatabaseExample xed .
۳. بررسی برنامه را به برنامه خود اضافه کنید
- منتظر بمانید تا Swift Package Manager وابستگیهای پروژه را برطرف کند.
- تب General در اپلیکیشن
DatabaseExample (iOS)را باز کنید. سپس، در بخش Frameworks، Libraries و Embedded Content ، روی دکمه + کلیک کنید.
- برای افزودن
FirebaseAppCheckگزینه را انتخاب کنید.
۴. ایجاد و نصب کارخانه ارائه دهنده App Check
- در گروه فایل
Shared، یک گروه جدید به نامAppCheckاضافه کنید. - درون این گروه، یک کلاس factory در یک فایل جداگانه، مثلاً
MyAppCheckProviderFactory.swift، ایجاد کنید و مطمئن شوید که آن را به هدفDatabaseExample (iOS)اضافه میکنید:import Firebase class MyAppCheckProviderFactory: NSObject, AppCheckProviderFactory { func createProvider(with app: FirebaseApp) -> AppCheckProvider? { #if targetEnvironment(simulator) // App Attest is not available on simulators. // Use a debug provider. return AppCheckDebugProvider(app: app) #else // Use App Attest provider on real devices. return AppAttestProvider(app: app) #endif } } - در مرحله بعد، در
DatabaseExampleApp.swift، مطمئن شوید کهFirebaseAppCheckرا وارد کردهاید و یک نمونه از کلاسMyAppCheckProviderFactoryرا به عنوان کارخانه ارائه دهنده App Check تنظیم کنید.import SwiftUI import FirebaseCore import FirebaseAppCheck @main struct DatabaseExampleApp: App { init() { // Set an instance of MyAppCheckProviderFactory as an App Check // provider factory before configuring Firebase. AppCheck.setAppCheckProviderFactory(MyAppCheckProviderFactory()) FirebaseApp.configure() } ... }
۵. ایجاد و پیکربندی یک پروژه Firebase
برای استفاده از App Check در پروژه iOS خود، باید این مراحل را در کنسول Firebase دنبال کنید:
- یک پروژه Firebase راهاندازی کنید.
- برنامه iOS خود را به پروژه Firebase اضافه کنید.
- پیکربندی احراز هویت فایربیس
- نمونه پایگاه داده Realtime را که میخواهید محافظت کنید، مقداردهی اولیه کنید.
- بررسی برنامه را پیکربندی کنید.
ایجاد یک پروژه
ابتدا باید یک پروژه Firebase ایجاد کنید.
- با استفاده از حساب گوگل خود وارد کنسول فایربیس شوید.
- برای ایجاد یک پروژه جدید، روی دکمه کلیک کنید و سپس نام پروژه را وارد کنید (برای مثال،
App Check Codelab). - روی ادامه کلیک کنید.
- در صورت درخواست، شرایط Firebase را مرور و قبول کنید و سپس روی ادامه کلیک کنید.
- (اختیاری) دستیار هوش مصنوعی را در کنسول Firebase (با نام "Gemini در Firebase") فعال کنید.
- برای این codelab، به گوگل آنالیتیکس نیاز ندارید ، بنابراین گزینه گوگل آنالیتیکس را غیرفعال کنید .
- روی ایجاد پروژه کلیک کنید، منتظر بمانید تا پروژه شما آماده شود و سپس روی ادامه کلیک کنید.
ایجاد یک نمونه پایگاه داده بلادرنگ
اکنون، به بخش پایگاه داده Realtime در کنسول Firebase بروید.
- برای شروع فرآیند ایجاد پایگاه داده، روی دکمه ایجاد پایگاه داده کلیک کنید.
- مکان پیشفرض (
us-central1) برای پایگاه داده را بدون تغییر بگذارید و روی Next کلیک کنید. - مطمئن شوید که حالت قفلشده (Locked Mode) انتخاب شده است و روی دکمهی فعالسازی (Enable) کلیک کنید تا قوانین امنیتی (Security Rules) برای پایگاه دادهی شما فعال شود.
- به برگه قوانین مرورگر Realtime Database بروید و قوانین پیشفرض را با موارد زیر جایگزین کنید:
{ "rules": { // User profiles are only readable/writable by the user who owns it "users": { "$UID": { ".read": "auth.uid == $UID", ".write": "auth.uid == $UID" } }, // Posts can be read by anyone but only written by logged-in users. "posts": { ".read": true, ".write": "auth.uid != null", "$POSTID": { // UID must match logged in user and is fixed once set "uid": { ".validate": "(data.exists() && data.val() == newData.val()) || newData.val() == auth.uid" }, // User can only update own stars "stars": { "$UID": { ".validate": "auth.uid == $UID" } } } }, // User posts can be read by anyone but only written by the user that owns it, // and with a matching UID "user-posts": { ".read": true, "$UID": { "$POSTID": { ".write": "auth.uid == $UID", ".validate": "data.exists() || newData.child('uid').val() == auth.uid" } } }, // Comments can be read by anyone but only written by a logged in user "post-comments": { ".read": true, ".write": "auth.uid != null", "$POSTID": { "$COMMENTID": { // UID must match logged in user and is fixed once set "uid": { ".validate": "(data.exists() && data.val() == newData.val()) || newData.val() == auth.uid" } } } } } } - برای فعال کردن قوانین امنیتی بهروزرسانیشده، روی دکمهی انتشار کلیک کنید.
برنامه iOS خود را برای اتصال به Firebase آماده کنید
برای اینکه بتوانید برنامه نمونه را روی یک دستگاه فیزیکی اجرا کنید، باید پروژه را به تیم توسعه خود اضافه کنید تا Xcode بتواند پروفایل تأمین مورد نیاز را برای شما مدیریت کند. برای افزودن برنامه نمونه به حساب توسعهدهنده خود، این مراحل را دنبال کنید:
- در Xcode، پروژه
DatabaseExampleرا در ناویگاتور پروژه انتخاب کنید. - هدف
DatabaseExample (iOS)را انتخاب کنید و تب Signing & Capabilities را باز کنید. - شما باید یک پیام خطا با این مضمون ببینید: «امضای DatabaseExample (iOS) نیازمند یک تیم توسعه است» .
- شناسه بسته را به یک شناسه منحصر به فرد بهروزرسانی کنید. سادهترین راه برای دستیابی به این هدف، استفاده از نام دامنه معکوس وبسایت شما است، برای مثال
com.acme.samples.firebase.quickstart.DatabaseExample(لطفاً از این شناسه استفاده نکنید؛ به جای آن شناسه منحصر به فرد خود را انتخاب کنید). - تیم توسعه خود را انتخاب کنید.
- وقتی Xcode عبارت "Provisioning Profile: Xcode Managed Profile" و یک آیکون اطلاعات کوچک در کنار این برچسب را نمایش میدهد، متوجه خواهید شد که همه چیز به خوبی پیش رفته است. با کلیک بر روی این آیکون، جزئیات بیشتری در مورد Provisioning Profile نمایش داده میشود.

برنامه iOS خود را وصل کنید
برای توضیح عمیقتر در مورد اتصال برنامهتان، مستندات مربوط به افزودن Firebase به پروژه iOS خود را بررسی کنید. برای شروع، این مراحل اصلی را در کنسول Firebase دنبال کنید:
- از صفحه نمای کلی پروژه جدید خود، روی دکمه + افزودن برنامه کلیک کنید و سپس روی نماد iOS+ کلیک کنید تا یک برنامه iOS جدید به پروژه Firebase خود اضافه کنید.
- شناسه بسته برنامه خود را وارد کنید (از شناسهای که در بخش قبلی تعریف کردید، مانند
com.acme.samples.firebase.quickstart.DatabaseExampleاستفاده کنید - به خاطر داشته باشید که این باید یک شناسه منحصر به فرد باشد) - روی ثبت برنامه کلیک کنید.
- فایربیس یک فایل
GoogleService-Info.plistتولید میکند که شامل تمام متادیتای لازم فایربیس برای برنامه شما است. - برای دانلود فایل، روی «دانلود GoogleService-Info.plist» کلیک کنید.
- در Xcode، خواهید دید که پروژه از قبل حاوی فایلی به نام
GoogleService-Info.plistاست. ابتدا این فایل را حذف کنید - در مرحله بعدی آن را با فایل مربوط به پروژه Firebase خود جایگزین خواهید کرد. - فایل
GoogleService-Info.plistرا که در مرحله قبل دانلود کردید، در پوشه ریشه پروژه Xcode خود کپی کنید و آن را به مقصدDatabaseExample (iOS)اضافه کنید، مطمئن شوید که نام آنGoogleService-Info.plistباشد. - روی مراحل باقیماندهی فرآیند ثبتنام کلیک کنید. از آنجایی که پروژهی نمونه از قبل به درستی تنظیم شده است، نیازی به ایجاد تغییر در کد ندارید.
پیکربندی احراز هویت فایربیس
خب! تا اینجا تنظیمات زیادی انجام شد، اما صبر کنید! اگر در Firebase تازهکار هستید، بخشهای اساسی یک گردش کار را دیدهاید که به زودی با آنها آشنا خواهید شد.
اکنون، احراز هویت Firebase را برای این برنامه پیکربندی خواهید کرد.
فعال کردن احراز هویت ارائه دهنده ورود به سیستم ایمیل/رمز عبور
- همچنان در کنسول Firebase هستید، بخش Authentication کنسول را باز کنید.
- برای راهاندازی احراز هویت فایربیس برای پروژه خود، روی «شروع» کلیک کنید.
- برگه روش ورود را انتخاب کنید.
- در بخش ارائه دهندگان بومی ، ایمیل/رمز عبور را انتخاب کنید.
- ایمیل/رمز عبور را فعال کنید و روی ذخیره کلیک کنید.
اضافه کردن کاربر آزمایشی
- برگه کاربران از بخش احراز هویت را باز کنید.
- روی افزودن کاربر کلیک کنید.
- یک ایمیل و رمز عبور برای کاربر آزمایشی خود مشخص کنید، سپس روی افزودن کاربر کلیک کنید.
برنامه را امتحان کنید
به Xcode برگردید و برنامه را روی شبیهساز iOS اجرا کنید. با ایمیل و رمز عبور کاربر آزمایشی که ایجاد کردهاید وارد شوید. پس از ورود، یک پست ایجاد کنید، برای یک پست موجود نظر ارسال کنید و پستها را ستارهدار/حذف ستاره کنید.
۶. پیکربندی یک ارائهدهندهی گواهی App Attest
در این مرحله، App Check را برای استفاده از ارائهدهنده App Attest در کنسول Firebase پیکربندی خواهید کرد.
- در کنسول Firebase، به بخش App Check کنسول بروید.
- روی شروع به کار کلیک کنید.
- در تب برنامهها ، روی برنامه خود کلیک کنید تا جزئیات آن را ببینید.
- برای پیکربندی App Attest روی App Attest کلیک کنید، سپس شناسه تیم حساب توسعهدهنده اپل خود را وارد کنید (میتوانید این را در بخش عضویت در پورتال توسعهدهنده اپل پیدا کنید):

- روی ذخیره کلیک کنید.
با این کار، شما یک پروژه Firebase فعال دارید که به برنامه جدید ما متصل است و App Check فعال است.
اکنون آماده پیکربندی سرویس گواهیدهی خاص ما هستید! برای اطلاعات بیشتر در مورد این گردش کار، به بخش «فعال کردن بررسی برنامه با App Attest در iOS» مراجعه کنید.
۷. پیکربندی App Attest برای برنامه شما
حالا وقتشه که از کیت توسعه نرمافزاری (SDK) مربوط به Firebase App Check استفاده کنید و مقداری کد کلاینت روی اون پیادهسازی کنید.
ابتدا، باید پروژه Xcode را طوری پیکربندی کنید که SDK بتواند از API App Attest اپل استفاده کند تا اطمینان حاصل شود که درخواستهای ارسالی از برنامه شما از نمونههای قانونی برنامه شما میآیند.
- قابلیت App Attest را برای هدف برنامه خود در پروژه Xcode اضافه کنید:
- برگه «امضا و قابلیتها» را در تنظیمات هدف برنامه خود باز کنید
- روی دکمه " + " کلیک کنید
- در کادر محاورهای، قابلیت App Attest را پیدا کرده و انتخاب کنید.

- پس از انجام مرحله قبل، فایلی
DatabaseExample (iOS).entitlementsدر پوشه ریشه پروژه Xcode شما ظاهر خواهد شد. - در فایل
DatabaseExample (iOS).entitlements، مقدار کلیدApp Attest Environmentرا بهproduction.
پس از اتمام این مراحل و اجرای برنامه روی یک دستگاه فیزیکی iOS (آیفون/آیپد)، برنامه همچنان قادر به دسترسی به پایگاه داده Realtime خواهد بود. در مرحله بعد، App Check را اجرا خواهید کرد که درخواستهای ارسالی از برنامهها و دستگاههای نامعتبر را مسدود میکند.
برای کسب اطلاعات بیشتر در مورد این گردش کار، به فعال کردن بررسی برنامه با App Attest در iOS مراجعه کنید.
۸. پیکربندی یک ارائهدهندهی گواهی اشکالزدایی برای شبیهساز iOS
ارائهدهندهی اشکالزدایی Firebase App Check امکان آزمایش برنامهها با اجرای Firebase App Check را در محیطهای غیرقابل اعتماد، از جمله شبیهساز iOS، در طول فرآیند توسعه فراهم میکند. در مرحلهی بعد، باید ارائهدهندهی اشکالزدایی را با هم پیکربندی کنید.
ارائه دهنده اشکال زدایی Firebase را در برنامه خود نصب کنید
گزینه ۱: به صورت مشروط یک نمونه از ارائه دهنده اشکال زدایی را در کارخانه خود ایجاد کنید
شما بیشتر این کارها را هنگام ایجاد کارخانه ارائه دهنده App Check انجام دادید. در این مرحله، ثبت وقایع مربوط به debug secret محلی تولید شده توسط ارائه دهنده debug را اضافه خواهید کرد، بنابراین میتوانید این نمونه از برنامه را در کنسول Firebase برای اهداف اشکالزدایی ثبت کنید.
MyAppCheckProviderFactory.swift را با کد زیر بهروزرسانی کنید:
import Firebase
class MyAppCheckProviderFactory: NSObject, AppCheckProviderFactory {
func createProvider(with app: FirebaseApp) -> AppCheckProvider? {
#if targetEnvironment(simulator)
// App Attest is not available on simulators.
// Use a debug provider.
let provider = AppCheckDebugProvider(app: app)
// Print only locally generated token to avoid a valid token leak on CI.
print("Firebase App Check debug token: \(provider?.localDebugToken() ?? "" )")
return provider
#else
// Use App Attest provider on real devices.
return AppAttestProvider(app: app)
#endif
}
}
این رویکرد به ما انعطافپذیری بیشتری برای پیکربندی App Check بسته به محیط میدهد. به عنوان مثال، میتوانید از سایر ارائهدهندگان گواهی مانند DeviceCheck یا یک ارائهدهنده گواهی سفارشی در نسخههای سیستم عامل که App Attest در دسترس نیست، استفاده کنید. به مثال زیر توجه کنید:
import Firebase
class MyAppCheckProviderFactory: NSObject, AppCheckProviderFactory {
func createProvider(with app: FirebaseApp) -> AppCheckProvider? {
#if targetEnvironment(simulator)
// App Attest is not available on simulators.
// Use a debug provider.
let provider = AppCheckDebugProvider(app: app)
// Print only locally generated token to avoid a valid token leak on CI.
print("Firebase App Check debug token: \(provider?.localDebugToken() ?? "" )")
return provider
#else
if #available(iOS 14.0, *) {
// Use App Attest provider on real devices.
return AppAttestProvider(app: app)
} else {
return DeviceCheckProvider(app: app)
}
#endif
}
}
گزینه ۲: نصب AppCheckDebugProviderFactory
برای موارد سادهتر، میتوانید AppCheckDebugProviderFactory قبل از پیکربندی نمونه برنامه Firebase به طور موقت یا مشروط نصب کنید:
init() {
#if targetEnvironment(simulator)
let providerFactory = AppCheckDebugProviderFactory()
#else
let providerFactory = MyAppCheckProviderFactory()
#endif
AppCheck.setAppCheckProviderFactory(providerFactory)
FirebaseApp.configure()
}
این کار باعث میشود در ایجاد کارخانهی ارائهدهندهی App Check خودتان، چند خط کد صرفهجویی کنید.
رمز اشکالزدایی خود را در کنسول Firebase ثبت کنید
کد مخفی اشکالزدایی را از شبیهساز iOS خود دریافت کنید
- اگر تصمیم به نصب
AppCheckDebugProviderFactory(گزینه ۲ در بالا) گرفتهاید، باید با اضافه کردن-FIRDebugEnabledبه آرگومانهای راهاندازی برنامه، ثبت اشکالزدایی را برای برنامه خود فعال کنید:
- اجرای برنامه روی شبیهساز
- رمز اشکالزدایی را در کنسول Xcode پیدا کنید. میتوانید از فیلتر کنسول برای یافتن سریعتر آن استفاده کنید:

نکته: رمز اشکالزدایی (debug secret) در اولین اجرای برنامه برای شبیهساز شما ایجاد میشود و در تنظیمات پیشفرض کاربر ذخیره میشود. اگر برنامه را حذف کنید، شبیهساز را ریست کنید یا از شبیهساز دیگری استفاده کنید، یک رمز اشکالزدایی جدید ایجاد خواهد شد. حتماً رمز اشکالزدایی جدید را ثبت کنید.
رمز اشکالزدایی را ثبت کنید
- به کنسول Firevbase برگردید، به بخش App Check بروید.
- در تب برنامهها ، روی برنامه خود کلیک کنید تا جزئیات آن را ببینید.
- در منوی باز شده، گزینه مدیریت توکنهای اشکالزدایی (Manage debug tokens ) را انتخاب کنید:

- کد مخفی که از کنسول Xcode کپی کردهاید را اضافه کنید و سپس روی ذخیره کلیک کنید.

پس از این مراحل، میتوانید از برنامه روی شبیهساز حتی با فعال بودن App Check استفاده کنید.
نکته: ارائهدهندهی اشکالزدایی بهطور خاص برای جلوگیری از افشای اطلاعات محرمانهی اشکالزدایی طراحی شده است. با رویکرد فعلی، نیازی به ذخیرهی اطلاعات محرمانهی اشکالزدایی در کد منبع خود ندارید.
جزئیات بیشتر در مورد این جریان را میتوانید در مستندات پیدا کنید - به بخش «استفاده از بررسی برنامه با ارائهدهنده اشکالزدایی در iOS» مراجعه کنید.
۹. فعال کردن اجرای App Check برای پایگاه دادهی بلادرنگ Firebase
فعلاً، برنامه ما یک AppCheckProviderFactory تعریف میکند که AppAttestProvider را برای دستگاههای واقعی برمیگرداند. هنگام اجرا روی یک دستگاه فیزیکی، برنامه شما عملیات تصدیق را انجام داده و نتایج را به backend فایربیس ارسال میکند. با این حال، backend فایربیس همچنان درخواستها را از هر دستگاهی، شبیهساز iOS، یک اسکریپت و غیره میپذیرد. این حالت زمانی مفید است که هنوز کاربرانی با نسخه قدیمی برنامه خود بدون App Check دارید و هنوز نمیخواهید بررسیهای دسترسی را اعمال کنید.
اکنون، باید App Check enforcement را فعال کنید تا مطمئن شوید که برنامه Firebase فقط از دستگاههای قانونی قابل دسترسی است. نسخههای قدیمی برنامه که App Check را ندارند، پس از فعال کردن این قابلیت برای پروژه Firebase، دیگر کار نخواهند کرد.
- در کنسول فایربیس در بخش App Check ، روی Realtime Database کلیک کنید تا جزئیات آن نمایش داده شود.
- روی اجرا کلیک کنید.

- اطلاعات موجود در کادر تأیید را بخوانید و سپس روی «اجرا» کلیک کنید.
پس از انجام این مراحل، فقط برنامههای قانونی میتوانند به پایگاه داده دسترسی داشته باشند. سایر برنامهها مسدود خواهند شد.
سعی کنید با یک برنامهی نامعتبر به پایگاه دادهی Realtime دسترسی پیدا کنید
برای مشاهدهی اجرای قانون App Check در عمل، این مراحل را دنبال کنید:
- با کامنت کردن کد ثبت App Check در متد
initاز نقطه ورود برنامه خود درDatabaseExampleAppثبت App Check را غیرفعال کنید. - با انتخاب Device > Erase All Content and Settings، شبیهساز را مجدداً تنظیم کنید. این کار شبیهساز را پاک میکند (و توکن دستگاه را نامعتبر میسازد).
- دوباره برنامه را روی شبیهساز اجرا کنید.
- اکنون باید پیام خطای زیر را مشاهده کنید:
[FirebaseDatabase][I-RDB034005] Firebase Database connection was forcefully killed by the server. Will not attempt reconnect. Reason: Invalid appcheck token.
برای فعال کردن مجدد App Check، مراحل زیر را انجام دهید:
- کد ثبت نام App Check را در
DatabaseExampleAppاز حالت کامنت خارج کنید. - برنامه را مجدداً راه اندازی کنید.
- به توکن جدید App Check در کنسول Xcode توجه کنید.
- توکن اشکالزدایی را در تنظیمات بررسی برنامه (App Check) در کنسول Firebase ثبت کنید.
- برنامه را دوباره اجرا کنید.
- دیگر نباید پیام خطایی ببینید و باید بتوانید پستها و نظرات جدید را در برنامه اضافه کنید.
۱۰. تبریک میگویم!

حالا شما میدانید که چگونه:
- افزودن App Check به یک پروژه موجود
- یک ارائهدهندهی گواهی App Attest برای نسخهی عملیاتی برنامهی خود پیکربندی کنید.
- پیکربندی یک ارائهدهندهی گواهی اشکالزدایی برای آزمایش برنامه روی شبیهساز
- برای اطلاع از زمان اجرای App Check برای پروژه Firebase خود، انتشار نسخه برنامه را دنبال کنید.
- فعال کردن اجرای بررسی برنامه
مراحل بعدی
بیاموزید که چگونه با استفاده از Remote Config، App Check را به تدریج برای کاربران خود در Firebase App Check که به تدریج با استفاده از Firebase Remote Config ارائه میشود، راهاندازی کنید.
اینها منابع دیگری هستند که ممکن است مفید باشند
تنظیمات شرح داده شده در این codelab برای اکثر موارد کار خواهد کرد، اما App Check در صورت نیاز انعطافپذیری بیشتری به شما میدهد - برای جزئیات بیشتر به لینکهای زیر مراجعه کنید: