āĻĢāĻžāϝāĻŧāĻžāϰāĻŦ⧇āϏ āύāĻŋāϰāĻžāĻĒāĻ¤ā§āϤāĻž āĻšā§‡āĻ•āϞāĻŋāĻ¸ā§āϟ

āφāĻĒāύāĻžāϰ Firebase āϏāĻŽā§āĻĒāĻĻ āĻāĻŦāĻ‚ āφāĻĒāύāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āĻĻ⧇āϰ āĻĄā§‡āϟāĻž āϏ⧁āϰāĻ•ā§āώāĻŋāϤ āϰāĻžāĻ–āϤ⧇, āĻāχ āύāĻŋāĻ°ā§āĻĻ⧇āĻļāĻŋāĻ•āĻž āĻ…āύ⧁āϏāϰāĻŖ āĻ•āϰ⧁āύāĨ¤ āĻĒā§āϰāϤāĻŋāϟāĻŋ āφāχāĻŸā§‡āĻŽ āĻ…āĻ—āĻ¤ā§āϝāĻž āφāĻĒāύāĻžāϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧāϤāĻžāϰ āϜāĻ¨ā§āϝ āĻĒā§āϰāϝ⧋āĻœā§āϝ āĻšāĻŦ⧇ āύāĻž, āϤāĻŦ⧇ āφāĻĒāύāĻŋ āϝāĻ–āύ āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāĻĒāϟāĻŋ āĻŦāĻŋāĻ•āĻžāĻļ āĻ•āϰāĻŦ⧇āύ āϤāĻ–āύ āϏ⧇āϗ⧁āϞāĻŋ āĻŽāύ⧇ āϰāĻžāĻ–āĻŦ⧇āύāĨ¤

āφāĻĒāĻ¤ā§āϤāĻŋāϜāύāĻ• āĻŸā§āϰāĻžāĻĢāĻŋāĻ• āĻāĻĄāĻŧāĻŋāϝāĻŧ⧇ āϚāϞ⧁āύ

āĻŦā§āϝāĻžāĻ•āĻāĻ¨ā§āĻĄ āĻĒāϰāĻŋāώ⧇āĻŦāĻžāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āĻĒāĻ°ā§āϝāĻŦ⧇āĻ•ā§āώāĻŖ āĻāĻŦāĻ‚ āϏāϤāĻ°ā§āĻ•āϤāĻž āϏ⧇āϟ āφāĻĒ āĻ•āϰ⧁āύ⧎

āφāĻĒāĻ¤ā§āϤāĻŋāϜāύāĻ• āĻŸā§āĻ°ā§āϝāĻžāĻĢāĻŋāĻ• āϏāύāĻžāĻ•ā§āϤ āĻ•āϰāϤ⧇, āϝ⧇āĻŽāύ āĻĄāĻŋāύāĻžāϝāĻŧāĻžāϞ-āĻ…āĻĢ-āϏāĻžāĻ°ā§āĻ­āĻŋāϏ (āĻĄāϏ) āφāĻ•ā§āϰāĻŽāĻŖ, Cloud Firestore , Realtime Database , Cloud Storage āĻāĻŦāĻ‚ Hosting āϜāĻ¨ā§āϝ āĻŽāύāĻŋāϟāϰāĻŋāĻ‚ āĻāĻŦāĻ‚ āϏāϤāĻ°ā§āĻ•āϤāĻž āϏ⧇āϟ āφāĻĒ āĻ•āϰ⧁āύ

āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāĻžāύ⧇ āφāĻ•ā§āϰāĻŽāϪ⧇āϰ āϏāĻ¨ā§āĻĻ⧇āĻš āĻšāϞ⧇, āϕ⧀ āϘāϟāϛ⧇ āϤāĻž āϤāĻžāĻĻ⧇āϰ āϜāĻžāύāĻžāϤ⧇ āϝāϤ āϤāĻžāĻĄāĻŧāĻžāϤāĻžāĻĄāĻŧāĻŋ āϏāĻŽā§āĻ­āĻŦ āϏāĻšāĻžāϝāĻŧāϤāĻžāϰ āϏāĻžāĻĨ⧇ āϝ⧋āĻ—āĻžāϝ⧋āĻ— āĻ•āϰ⧁āύ āĨ¤

App Check āϏāĻ•ā§āώāĻŽ āĻ•āϰ⧁āύ

āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāĻĒāϗ⧁āϞāĻŋāχ āφāĻĒāύāĻžāϰ āĻŦā§āϝāĻžāĻ•āĻāĻ¨ā§āĻĄ āĻĒāϰāĻŋāώ⧇āĻŦāĻžāϗ⧁āϞāĻŋ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇ āϤāĻž āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰāϤ⧇, āĻāϟāĻŋ āϏāĻŽāĻ°ā§āĻĨāύ āĻ•āϰ⧇ āĻāĻŽāύ āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻĒāϰāĻŋāώ⧇āĻŦāĻžāϰ āϜāĻ¨ā§āϝ Firebase App Check āϏāĻ•ā§āώāĻŽ āĻ•āϰ⧁āύ⧎

āĻ¸ā§āĻŦāĻžāĻ­āĻžāĻŦāĻŋāĻ• āĻŸā§āϰāĻžāĻĢāĻŋāϕ⧇āϰ āϜāĻ¨ā§āϝ āĻ¸ā§āϕ⧇āϞ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āφāĻĒāύāĻžāϰ Cloud Functions āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰ⧁āύ

Cloud Functions āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāĻĒ⧇āϰ āϚāĻžāĻšāĻŋāĻĻāĻž āĻŽā§‡āϟāĻžāϤ⧇ āĻ¸ā§āĻŦāϝāĻŧāĻ‚āĻ•ā§āϰāĻŋāϝāĻŧāĻ­āĻžāĻŦ⧇ āĻ¸ā§āϕ⧇āϞ āĻ•āϰ⧇, āĻ•āĻŋāĻ¨ā§āϤ⧁ āφāĻ•ā§āϰāĻŽāϪ⧇āϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇, āĻāϰ āĻ…āĻ°ā§āĻĨ āĻāĻ•āϟāĻŋ āĻŦāĻĄāĻŧ āĻŦāĻŋāϞ āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āĻāϟāĻŋ āĻĒā§āϰāϤāĻŋāϰ⧋āϧ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ, āφāĻĒāύāĻŋ āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāĻĒ⧇āϰ āϜāĻ¨ā§āϝ āĻ¸ā§āĻŦāĻžāĻ­āĻžāĻŦāĻŋāĻ• āĻŸā§āĻ°ā§āϝāĻžāĻĢāĻŋāϕ⧇āϰ āωāĻĒāϰ āĻ­āĻŋāĻ¤ā§āϤāĻŋ āĻ•āϰ⧇ āĻāĻ•āϟāĻŋ āĻĢāĻžāĻ‚āĻļāύ⧇āϰ āϏāĻŽāĻŦāĻ°ā§āϤ⧀ āĻĻ⧃āĻˇā§āϟāĻžāĻ¨ā§āϤ⧇āϰ āϏāĻ‚āĻ–ā§āϝāĻž āϏ⧀āĻŽāĻŋāϤ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤

āϏ⧀āĻŽāĻž āĻĒā§āϰāĻžāϝāĻŧ āĻĒ⧌āρāϛ⧇ āϗ⧇āϞ⧇ āĻ…āĻŦāĻšāĻŋāϤ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āϏāϤāĻ°ā§āĻ•āϤāĻž āϏ⧇āϟ āφāĻĒ āĻ•āϰ⧁āύ⧎

āϝāĻĻāĻŋ āφāĻĒāύāĻžāϰ āĻĒāϰāĻŋāώ⧇āĻŦāĻžāϤ⧇ āĻ…āύ⧁āϰ⧋āϧ⧇āϰ āĻ¸ā§āĻĒāĻžāχāĻ• āĻĨāĻžāϕ⧇, āĻĒā§āϰāĻžāϝāĻŧāĻļāχ āϕ⧋āϟāĻž āĻĒā§āϰāĻŦ⧇āĻļ āĻ•āϰāĻŦ⧇ āĻāĻŦāĻ‚ āĻ¸ā§āĻŦāϝāĻŧāĻ‚āĻ•ā§āϰāĻŋāϝāĻŧāĻ­āĻžāĻŦ⧇ āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ⧇ āĻŸā§āĻ°ā§āϝāĻžāĻĢāĻŋāĻ• āĻĨā§āϰ⧋āϟāϞ āĻ•āϰāĻŦ⧇āĨ¤ āφāĻĒāύāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāĻŦāĻ‚ āĻŦāĻŋāϞāĻŋāĻ‚ āĻĄā§āϝāĻžāĻļāĻŦā§‹āĻ°ā§āĻĄ āύāĻŋāϰ⧀āĻ•ā§āώāĻŖ āĻ•āϰāĻž āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰ⧁āύ, āĻ•āĻŋāĻ¨ā§āϤ⧁ āϏāĻŽā§āĻĒāĻĻ⧇āϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻĒā§āϰāĻ¤ā§āϝāĻžāĻļāĻž āĻ›āĻžāĻĄāĻŧāĻŋāϝāĻŧ⧇ āϗ⧇āϞ⧇ āĻŦāĻŋāĻœā§āĻžāĻĒā§āϤāĻŋ āĻĒāĻžāĻ“āϝāĻŧāĻžāϰ āϜāĻ¨ā§āϝ āφāĻĒāύāĻŋ āφāĻĒāύāĻžāϰ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇ āĻŦāĻžāĻœā§‡āϟ āϏāϤāĻ°ā§āĻ•āϤāĻžāĻ“ āϏ⧇āϟ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤

āĻ¸ā§āĻŦ-āĻĄāϏ āĻĒā§āϰāϤāĻŋāϰ⧋āϧ āĻ•āϰ⧁āύ: āĻāĻŽā§āϞ⧇āϟāϰāϗ⧁āϞāĻŋāϰ āϏāĻžāĻĨ⧇ āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧāĻ­āĻžāĻŦ⧇ āĻĢāĻžāĻ‚āĻļāύ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰ⧁āύ

Cloud Functions āĻŦāĻŋāĻ•āĻžāĻļ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻĻ⧁āĻ°ā§āϘāϟāύāĻžāĻ•ā§āϰāĻŽā§‡ āύāĻŋāĻœā§‡āχ DOS āĻ•āϰāĻž āϏāĻšāϜ āĻšāϤ⧇ āĻĒāĻžāϰ⧇: āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, āĻāĻ•āϟāĻŋ āĻ…āϏ⧀āĻŽ āĻŸā§āϰāĻŋāĻ—āĻžāϰ-āϰāĻžāχāϟ āϞ⧁āĻĒ āϤ⧈āϰāĻŋ āĻ•āϰ⧇⧎ āφāĻĒāύāĻŋ Firebase Local Emulator Suite āĻĻāĻŋāϝāĻŧ⧇ āφāĻĒāύāĻžāϰ āĻĄā§‡āϭ⧇āϞāĻĒāĻŽā§‡āĻ¨ā§āϟ āĻ•āϰ⧇ āϞāĻžāχāĻ­ āĻĒāϰāĻŋāώ⧇āĻŦāĻžāϗ⧁āϞāĻŋāϕ⧇ āĻĒā§āϰāĻ­āĻžāĻŦāĻŋāϤ āĻ•āϰāĻž āĻĨ⧇āϕ⧇ āĻāχ āϭ⧁āϞāϗ⧁āϞāĻŋ āĻĒā§āϰāϤāĻŋāϰ⧋āϧ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤

āĻāĻŦāĻ‚ āϝāĻĻāĻŋ āφāĻĒāύāĻŋ āϭ⧁āϞāĻŦāĻļāϤ āύāĻŋāĻœā§‡ DOS āĻ•āϰ⧇āύ, āϤāĻžāĻšāϞ⧇ index.js āĻĨ⧇āϕ⧇ āφāĻĒāύāĻžāϰ āĻĢāĻžāĻ‚āĻļāύāϟāĻŋ āĻŽā§āϛ⧇ āĻĢ⧇āϞ⧇ āĻāĻŦāĻ‚ āϤāĻžāϰāĻĒāϰ āϚāĻžāϞ⧁ āĻ•āϰ⧇ āφāύāĻĄāĻŋāĻĒā§āϞ⧋āϝāĻŧ āĻ•āϰ⧁āύ firebase deploy --only functions āĨ¤

āϝ⧇āĻ–āĻžāύ⧇ āϰāĻŋāϝāĻŧ⧇āϞ-āϟāĻžāχāĻŽ āĻĒā§āϰāϤāĻŋāĻ•ā§āϰāĻŋāϝāĻŧāĻžāĻļā§€āϞāϤāĻž āĻ•āĻŽ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ, āĻ•āĻžāĻ āĻžāĻŽā§‹āϟāĻŋ āϰāĻ•ā§āώāĻŖāĻžāĻ¤ā§āĻŽāĻ•āĻ­āĻžāĻŦ⧇ āĻ•āĻžāϜ āĻ•āϰ⧇

āφāĻĒāύāĻžāϰ āϝāĻĻāĻŋ āϰāĻŋāϝāĻŧ⧇āϞ āϟāĻžāχāĻŽā§‡ āϕ⧋āύāĻ“ āĻĢāĻžāĻ‚āĻļāύ⧇āϰ āĻĢāϞāĻžāĻĢāϞ āωāĻĒāĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰāĻžāϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āύāĻž āĻšāϝāĻŧ, āφāĻĒāύāĻŋ āĻŦā§āϝāĻžāĻšā§‡ āĻĢāϞāĻžāĻĢāϞāϗ⧁āϞāĻŋ āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻžāĻ•āϰāϪ⧇āϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āφāĻĒāĻ¤ā§āϤāĻŋāϜāύāĻ• āĻŸā§āĻ°ā§āϝāĻžāĻĢāĻŋāϕ⧇āϰ āĻŦāĻŋāϰ⧁āĻĻā§āϧ⧇ āĻĒā§āϰāĻļāĻŽāĻŋāϤ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ: āĻāĻ•āϟāĻŋ Pub/Sub āĻŦāĻŋāώāϝāĻŧ⧇ āĻĢāϞāĻžāĻĢāϞ āĻĒā§āϰāĻ•āĻžāĻļ āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ āύāĻŋāĻ°ā§āϧāĻžāϰāĻŋāϤ āĻĢāĻžāĻ‚āĻļāύ⧇āϰ āϏāĻžāĻĨ⧇ āύāĻŋāϝāĻŧāĻŽāĻŋāϤ āĻŦāĻŋāϰāϤāĻŋāϤ⧇ āĻĢāϞāĻžāĻĢāϞāϗ⧁āϞāĻŋ āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻž āĻ•āϰ⧁āύ⧎

API āϕ⧀ āĻŦ⧁āĻā§āύ

āĻĢāĻžāϝāĻŧāĻžāϰāĻŦ⧇āϏ āĻĒāϰāĻŋāώ⧇āĻŦāĻžāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ API āϕ⧀āϗ⧁āϞāĻŋ āĻ—ā§‹āĻĒāύ āύāϝāĻŧ⧎

Firebase āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ Firebase āĻĒāϰāĻŋāώ⧇āĻŦāĻžāϗ⧁āϞāĻŋāϤ⧇ āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāĻĒ⧇āϰ Firebase āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ āĻļāύāĻžāĻ•ā§āϤ āĻ•āϰāϤ⧇ API āϕ⧀ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇, āĻāĻŦāĻ‚ āĻĄā§‡āϟāĻžāĻŦ⧇āϏ āĻŦāĻž Cloud Storage āĻĄā§‡āϟāĻžāϰ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏ āύāĻŋāϝāĻŧāĻ¨ā§āĻ¤ā§āϰāĻŖ āĻ•āϰāϤ⧇ āύāϝāĻŧ, āϝāĻž Firebase Security Rules āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ āĻāχ āĻ•āĻžāϰāϪ⧇, āφāĻĒāύāĻžāϕ⧇ Firebase āĻĒāϰāĻŋāώ⧇āĻŦāĻžāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ API āϕ⧀āϗ⧁āϞāĻŋāϕ⧇ āĻ—ā§‹āĻĒāύ⧀āϝāĻŧ āĻšāĻŋāϏāĻžāĻŦ⧇ āĻŦāĻŋāĻŦ⧇āϚāύāĻž āĻ•āϰāĻžāϰ āĻĻāϰāĻ•āĻžāϰ āύ⧇āχ āĻāĻŦāĻ‚ āφāĻĒāύāĻŋ āϏ⧇āϗ⧁āϞāĻŋāϕ⧇ āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āϟ āϕ⧋āĻĄā§‡ āύāĻŋāϰāĻžāĻĒāĻĻ⧇ āĻāĻŽā§āĻŦ⧇āĻĄ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ⧎ Firebase-āĻāϰ āϜāĻ¨ā§āϝ API āϕ⧀ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āφāϰāĻ“ āϜāĻžāύ⧁āύāĨ¤

API āϕ⧀ āϏ⧀āĻŽāĻžāĻŦāĻĻā§āϧāϤāĻž āϏ⧇āϟ āφāĻĒ āĻ•āϰ⧁āύ

āĻ¸ā§āĻĒ⧁āĻĢ āĻ…āύ⧁āϰ⧋āϧ⧇ āφāĻĒāύāĻžāϰ API āϕ⧀ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āĻšā§‡āĻˇā§āϟāĻžāĻ•āĻžāϰ⧀ āφāĻ•ā§āϰāĻŽāĻŖāĻ•āĻžāϰ⧀āϰ āĻŦāĻŋāϰ⧁āĻĻā§āϧ⧇ āĻāĻ•āϟāĻŋ āĻ…āϤāĻŋāϰāĻŋāĻ•ā§āϤ āĻĒā§āϰāϤāĻŋāϰ⧋āϧ āĻšāĻŋāϏāĻžāĻŦ⧇, āφāĻĒāύāĻŋ āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāĻĒ āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āϟ āĻāĻŦāĻ‚ āφāĻĒāύāĻŋ āϝ⧇ APIāϗ⧁āϞāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āύ āϤāĻžāϰ āϜāĻ¨ā§āϝ āφāĻĒāύāĻžāϰ API āϕ⧀āϗ⧁āϞāĻŋāϕ⧇ āĻŦā§āϝāĻžāĻĒā§āϤ āĻ•āϰāϤ⧇ API āϕ⧀ āϏ⧀āĻŽāĻžāĻŦāĻĻā§āϧāϤāĻž āϝ⧁āĻ•ā§āϤ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤

FCM āϏāĻžāĻ°ā§āĻ­āĻžāϰ āϕ⧀ āĻ—ā§‹āĻĒāύ āϰāĻžāϖ⧁āύ

āĻĢāĻžāϝāĻŧāĻžāϰāĻŦ⧇āϏ āĻĒāϰāĻŋāώ⧇āĻŦāĻžāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ API āϕ⧀āϗ⧁āϞāĻŋāϰ āĻŦāĻŋāĻĒāϰ⧀āϤ⧇, FCM āϏāĻžāĻ°ā§āĻ­āĻžāϰ āϕ⧀āϗ⧁āϞāĻŋ ( āωāĻ¤ā§āϤāϰāĻžāϧāĻŋāĻ•āĻžāϰ FCM HTTP API āĻĻā§āĻŦāĻžāϰāĻž āĻŦā§āϝāĻŦāĻšā§ƒāϤ) āϏāĻ‚āĻŦ⧇āĻĻāύāĻļā§€āϞ āĻāĻŦāĻ‚ āĻ—ā§‹āĻĒāύ āϰāĻžāĻ–āĻž āφāĻŦāĻļā§āϝāϕ⧎

āĻĒāϰāĻŋāώ⧇āĻŦāĻž āĻ…ā§āϝāĻžāĻ•āĻžāωāĻ¨ā§āϟ āϕ⧀āϗ⧁āϞāĻŋ āĻ—ā§‹āĻĒāύ āϰāĻžāϖ⧁āύ

āĻāĻ›āĻžāĻĄāĻŧāĻžāĻ“ Firebase āĻĒāϰāĻŋāώ⧇āĻŦāĻžāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ API āϕ⧀āϗ⧁āϞāĻŋāϰ āĻŦāĻŋāĻĒāϰ⧀āϤ⧇, āĻĒāϰāĻŋāώ⧇āĻŦāĻž āĻ…ā§āϝāĻžāĻ•āĻžāωāĻ¨ā§āĻŸā§‡āϰ āĻŦā§āϝāĻ•ā§āϤāĻŋāĻ—āϤ āϕ⧀āϗ⧁āϞāĻŋ ( Firebase Admin SDK āĻĻā§āĻŦāĻžāϰāĻž āĻŦā§āϝāĻŦāĻšā§ƒāϤ) āϏāĻ‚āĻŦ⧇āĻĻāύāĻļā§€āϞ āĻāĻŦāĻ‚ āĻ—ā§‹āĻĒāύ āϰāĻžāĻ–āĻž āφāĻŦāĻļā§āϝāĻ• ⧎

Firebase Security Rules

āĻ‰ā§ŽāĻĒāĻžāĻĻāύ āĻŦāĻž āϞāĻ• āĻŽā§‹āĻĄā§‡ āύāĻŋāϝāĻŧāĻŽ āĻļ⧁āϰ⧁ āĻ•āϰ⧁āύ

āφāĻĒāύāĻŋ āϝāĻ–āύ Cloud Firestore , Realtime Database , āĻāĻŦāĻ‚ Cloud Storage āϏ⧇āϟ āφāĻĒ āĻ•āϰ⧇āύ, āϤāĻ–āύ āĻĄāĻŋāĻĢāĻ˛ā§āϟāϰ⧂āĻĒ⧇ āϏāĻŽāĻ¸ā§āϤ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏ āĻ…āĻ¸ā§āĻŦā§€āĻ•āĻžāϰ āĻ•āϰāϤ⧇ āφāĻĒāύāĻžāϰ Firebase Security Rules āĻļ⧁āϰ⧁ āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāĻĒ āĻŦāĻŋāĻ•āĻžāĻļ⧇āϰ āϏāĻžāĻĨ⧇ āϏāĻžāĻĨ⧇ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āϏāĻ‚āĻ¸ā§āĻĨāĻžāύāϗ⧁āϞāĻŋāϤ⧇ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏ āĻŽāĻžā§āϜ⧁āϰ āĻ•āϰ⧇ āĻāĻŽāύ āύāĻŋāϝāĻŧāĻŽāϗ⧁āϞāĻŋ āϝ⧁āĻ•ā§āϤ āĻ•āϰ⧁āύ⧎

Cloud Firestore (āĻ‰ā§ŽāĻĒāĻžāĻĻāύ āĻŽā§‹āĻĄ) āĻāĻŦāĻ‚ Realtime Database (āϞāĻ• āĻ•āϰāĻž āĻŽā§‹āĻĄ) āĻāϰ āύāϤ⧁āύ āωāĻĻāĻžāĻšāϰāĻŖāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻĄāĻŋāĻĢāĻ˛ā§āϟ āϏ⧇āϟāĻŋāĻ‚āϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ⧎ Cloud Storage āϜāĻ¨ā§āϝ, āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤāϗ⧁āϞāĻŋāϰ āĻŽāϤ⧋ āĻāĻ•āϟāĻŋ āϏ⧁āϰāĻ•ā§āώāĻž āύāĻŋāϝāĻŧāĻŽ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āĻĻāĻŋāϝāĻŧ⧇ āĻļ⧁āϰ⧁ āĻ•āϰ⧁āύ:

rules_version = '2';
service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write: if false;
    }
  }
}

āύāĻŋāϰāĻžāĻĒāĻ¤ā§āϤāĻž āύāĻŋāϝāĻŧāĻŽ āĻāĻ•āϟāĻŋ āĻ¸ā§āĻ•āĻŋāĻŽāĻž; āφāĻĒāύāĻŋ āύāĻĨāĻŋ āϝ⧋āĻ— āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āύāĻŋāϝāĻŧāĻŽ āϝ⧋āĻ— āĻ•āϰ⧁āύ

āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāĻĒāϟāĻŋ āϞ⧇āĻ–āĻžāϰ āĻĒāϰ⧇ āύāĻŋāϰāĻžāĻĒāĻ¤ā§āϤāĻž āύāĻŋāϝāĻŧāĻŽ āϞāĻŋāĻ–āĻŦ⧇āύ āύāĻž, āĻāĻ• āϧāϰāύ⧇āϰ āĻĒā§āϰāĻŋ-āϞāĻžā§āϚ āϟāĻžāĻ¸ā§āĻ• āĻšāĻŋāϏ⧇āĻŦ⧇āĨ¤ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇, āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāĻĒ āϞ⧇āĻ–āĻžāϰ āϏāĻŽāϝāĻŧ āύāĻŋāϰāĻžāĻĒāĻ¤ā§āϤāĻž āĻŦāĻŋāϧāĻŋ āϞāĻŋāϖ⧁āύ, āϏ⧇āϗ⧁āϞāĻŋāϕ⧇ āĻāĻ•āϟāĻŋ āĻĄāĻžāϟāĻžāĻŦ⧇āϏ āĻ¸ā§āĻ•āĻŋāĻŽāĻžāϰ āĻŽāϤ⧋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ: āϝāĻ–āύāχ āφāĻĒāύāĻžāϕ⧇ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āύāĻĨāĻŋāϰ āĻĒā§āϰāĻ•āĻžāϰ āĻŦāĻž āĻĒāĻžāĻĨ āĻ•āĻžāĻ āĻžāĻŽā§‹ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇, āĻĒā§āϰāĻĨāĻŽā§‡ āĻāϟāĻŋāϰ āύāĻŋāϰāĻžāĻĒāĻ¤ā§āϤāĻž āύāĻŋāϝāĻŧāĻŽ āϞāĻŋāϖ⧁āύ⧎

Local Emulator Suite āϏāĻžāĻĨ⧇ āχāωāύāĻŋāϟ āĻĒāϰ⧀āĻ•ā§āώāĻž āύāĻŋāϰāĻžāĻĒāĻ¤ā§āϤāĻž āύāĻŋāϝāĻŧāĻŽ; āĻāϟāĻŋ CI āĻ āϝ⧋āĻ— āĻ•āϰ⧁āύ

āφāĻĒāύāĻžāϰ āϏ⧁āϰāĻ•ā§āώāĻž āύāĻŋāϝāĻŧāĻŽāϗ⧁āϞāĻŋ āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāĻĒ⧇āϰ āĻŦāĻŋāĻ•āĻžāĻļ⧇āϰ āϏāĻžāĻĨ⧇ āϤāĻžāϞ āĻŽāĻŋāϞāĻŋāϝāĻŧ⧇ āϚāϞāϛ⧇ āϤāĻž āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰāϤ⧇, āχāωāύāĻŋāϟ Firebase Local Emulator Suite āϏāĻžāĻĨ⧇ āφāĻĒāύāĻžāϰ āύāĻŋāϝāĻŧāĻŽāϗ⧁āϞāĻŋ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āĻāχ āĻĒāϰ⧀āĻ•ā§āώāĻžāϗ⧁āϞāĻŋ āφāĻĒāύāĻžāϰ CI āĻĒāĻžāχāĻĒāϞāĻžāχāύ⧇ āϝ⧁āĻ•ā§āϤ āĻ•āϰ⧁āύ⧎ Cloud Firestore āĻāĻŦāĻ‚ Realtime Database āϜāĻ¨ā§āϝ āĻāχ āύāĻŋāĻ°ā§āĻĻ⧇āĻļāĻŋāĻ•āĻžāϗ⧁āϞāĻŋ āĻĻ⧇āϖ⧁āύāĨ¤

āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāĻŖ

āĻ•āĻžāĻ¸ā§āϟāĻŽ āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāĻŖ: āĻāĻ•āϟāĻŋ āĻŦāĻŋāĻļā§āĻŦāĻ¸ā§āϤ (āϏāĻžāĻ°ā§āĻ­āĻžāϰ-āϏāĻžāχāĻĄ) āĻĒāϰāĻŋāĻŦ⧇āĻļ āĻĨ⧇āϕ⧇ āĻŽāĻŋāĻ¨ā§āϟ JWTs

āφāĻĒāύāĻžāϰ āϝāĻĻāĻŋ āχāϤāĻŋāĻŽāĻ§ā§āϝ⧇āχ āĻāĻ•āϟāĻŋ āϏ⧁āϰāĻ•ā§āώāĻŋāϤ āϏāĻžāχāύ-āχāύ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻĨāĻžāϕ⧇, āĻāĻ•āϟāĻŋ āĻ•āĻžāĻ¸ā§āϟāĻŽ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻšā§‹āĻ• āĻŦāĻž āϤ⧃āϤ⧀āϝāĻŧ āĻĒāĻ•ā§āώ⧇āϰ āĻĒāϰāĻŋāώ⧇āĻŦāĻž, āφāĻĒāύāĻŋ Firebase āĻĒāϰāĻŋāώ⧇āĻŦāĻžāϗ⧁āϞāĻŋāϰ āϏāĻžāĻĨ⧇ āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāϪ⧇āϰ āϜāĻ¨ā§āϝ āφāĻĒāύāĻžāϰ āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ⧎ āĻāĻ•āϟāĻŋ āĻŦāĻŋāĻļā§āĻŦāĻ¸ā§āϤ āĻĒāϰāĻŋāĻŦ⧇āĻļ āĻĨ⧇āϕ⧇ āĻ•āĻžāĻ¸ā§āϟāĻŽ JWT āϤ⧈āϰāĻŋ āĻ•āϰ⧁āύ , āϤāĻžāϰāĻĒāϰ āφāĻĒāύāĻžāϰ āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āĻŸā§‡āϰ āĻ•āĻžāϛ⧇ āĻŸā§‹āϕ⧇āύāϗ⧁āϞāĻŋ āĻĒā§āϰ⧇āϰāĻŖ āĻ•āϰ⧁āύ, āϝāĻž āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāϪ⧇āϰ āϜāĻ¨ā§āϝ āĻŸā§‹āϕ⧇āύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ ( iOS+ , Android , Web , Unity , C++ )āĨ¤

āϤ⧃āϤ⧀āϝāĻŧ āĻĒāĻ•ā§āώ⧇āϰ āĻĒā§āϰāĻĻāĻžāύāĻ•āĻžāϰ⧀āϰ āϏāĻžāĻĨ⧇ āĻ•āĻžāĻ¸ā§āϟāĻŽ āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāĻŖ āĻŦā§āϝāĻŦāĻšāĻžāϰ⧇āϰ āωāĻĻāĻžāĻšāϰāϪ⧇āϰ āϜāĻ¨ā§āϝ, āĻŦā§āϞāĻ— āĻĒā§‹āĻ¸ā§āϟ āĻĻ⧇āϖ⧁āύ, Okta āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ Firebase āĻāϰ āϏāĻžāĻĨ⧇ āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāĻŖ āĻ•āϰ⧁āύ āĨ¤

āĻĒāϰāĻŋāϚāĻžāϞāĻŋāϤ āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāĻŖ: OAuth 2.0 āĻĒā§āϰāĻĻāĻžāύāĻ•āĻžāϰ⧀āϰāĻž āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āύāĻŋāϰāĻžāĻĒāĻĻ

āφāĻĒāύāĻŋ āϝāĻĻāĻŋ Firebase-āĻāϰ āĻĒāϰāĻŋāϚāĻžāϞāĻŋāϤ āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāĻŖ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝāϗ⧁āϞāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āύ, OAuth 2.0 / OpenID Connect āĻĒā§āϰāĻĻāĻžāύāĻ•āĻžāϰ⧀ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒāϗ⧁āϞāĻŋ (Google, Facebook, āχāĻ¤ā§āϝāĻžāĻĻāĻŋ) āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āϏ⧁āϰāĻ•ā§āώāĻŋāϤ⧎ āϝāĻĻāĻŋ āφāĻĒāύāĻŋ āĻĒāĻžāϰ⧇āύ (āφāĻĒāύāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀ āĻŦ⧇āϏ⧇āϰ āωāĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰ āĻ•āϰ⧇) āϤāĻžāĻšāϞ⧇ āφāĻĒāύāĻžāϕ⧇ āĻāχ āϏāϰāĻŦāϰāĻžāĻšāĻ•āĻžāϰ⧀āĻĻ⧇āϰ āĻāĻ• āĻŦāĻž āĻāĻ•āĻžāϧāĻŋāĻ• āϏāĻŽāĻ°ā§āĻĨāύ āĻ•āϰāĻž āωāϚāĻŋāϤāĨ¤

āχāĻŽā§‡āϞ-āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāĻŖ: āύ⧃āĻļāĻ‚āϏ āĻŦāϞ āφāĻ•ā§āϰāĻŽāĻŖ āĻĒā§āϰāϤāĻŋāϰ⧋āϧ āĻ•āϰāϤ⧇ āϏāĻžāχāύ-āχāύ āĻāĻ¨ā§āĻĄāĻĒāϝāĻŧ⧇āĻ¨ā§āĻŸā§‡āϰ āϜāĻ¨ā§āϝ āĻļāĻ•ā§āϤ āϕ⧋āϟāĻž āϏ⧇āϟ āĻ•āϰ⧁āύ

āφāĻĒāύāĻŋ āϝāĻĻāĻŋ Firebase-āĻāϰ āĻĒāϰāĻŋāϚāĻžāϞāĻŋāϤ āχāĻŽā§‡āϞ-āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāĻŖ āĻĒāϰāĻŋāώ⧇āĻŦāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āύ, āϤāĻžāĻšāϞ⧇ āύ⧃āĻļāĻ‚āϏ āĻŦāϞ āφāĻ•ā§āϰāĻŽāĻŖ āĻĒā§āϰāϤāĻŋāϰ⧋āϧ āĻ•āϰāϤ⧇ identitytoolkit.googleapis.com āĻāĻ¨ā§āĻĄāĻĒāϝāĻŧ⧇āĻ¨ā§āĻŸā§‡āϰ āĻĄāĻŋāĻĢāĻ˛ā§āϟ āϕ⧋āϟāĻž āĻļāĻ•ā§āϤ āĻ•āϰ⧁āύāĨ¤ āφāĻĒāύāĻŋ Google Cloud āĻ•āύāϏ⧋āϞ⧇ āφāχāĻĄā§‡āĻ¨ā§āϟāĻŋāϟāĻŋ āϟ⧁āϞāĻ•āĻŋāϟ API āĻĒ⧃āĻˇā§āĻ āĻž āĻĨ⧇āϕ⧇ āĻāϟāĻŋ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤

āχāĻŽā§‡āϞ-āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāĻŖ: āχāĻŽā§‡āϞ āĻ—āĻŖāύāĻž āϏ⧁āϰāĻ•ā§āώāĻž āϏāĻ•ā§āώāĻŽ āĻ•āϰ⧁āύ

āφāĻĒāύāĻŋ āϝāĻĻāĻŋ Firebase-āĻāϰ āĻĒāϰāĻŋāϚāĻžāϞāĻŋāϤ āχāĻŽā§‡āϞ-āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāĻŖ āĻĒāϰāĻŋāώ⧇āĻŦāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āύ, āϤāĻžāĻšāϞ⧇ āχāĻŽā§‡āϞ āĻ—āĻŖāύāĻž āϏ⧁āϰāĻ•ā§āώāĻž āϏāĻ•ā§āώāĻŽ āĻ•āϰ⧁āύ , āϝāĻž āĻ•ā§āώāϤāĻŋāĻ•āĻžāϰāĻ• āĻ…āĻ­āĻŋāύ⧇āϤāĻžāĻĻ⧇āϰ āĻ…ā§āϝāĻžāĻ•āĻžāωāĻ¨ā§āĻŸā§‡āϰ āύāĻžāĻŽ āĻ…āύ⧁āĻŽāĻžāύ āĻ•āϰāϤ⧇ āφāĻĒāύāĻžāϰ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇āϰ āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāϪ⧇āϰ āĻļ⧇āώ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāϗ⧁āϞāĻŋ āĻ…āĻĒāĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻŦāĻžāϧāĻž āĻĻ⧇āϝāĻŧ⧎

āĻŽāĻžāĻ˛ā§āϟāĻŋ-āĻĢā§āϝāĻžāĻ•ā§āϟāϰ āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāϪ⧇āϰ āϜāĻ¨ā§āϝ Google Cloud Identity Platform āφāĻĒāĻ—ā§āϰ⧇āĻĄ āĻ•āϰ⧁āύ

āϏāĻžāχāύ-āχāύ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻ…āϤāĻŋāϰāĻŋāĻ•ā§āϤ āύāĻŋāϰāĻžāĻĒāĻ¤ā§āϤāĻžāϰ āϜāĻ¨ā§āϝ, āφāĻĒāύāĻŋ Google Cloud Identity Platform āφāĻĒāĻ—ā§āϰ⧇āĻĄ āĻ•āϰ⧇ āĻŽāĻžāĻ˛ā§āϟāĻŋ-āĻĢā§āϝāĻžāĻ•ā§āϟāϰ āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāĻŖ āϏāĻŽāĻ°ā§āĻĨāύ āϝ⧋āĻ— āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤ āφāĻĒāύāĻŋ āφāĻĒāĻ—ā§āϰ⧇āĻĄ āĻ•āϰāĻžāϰ āĻĒāϰ⧇ āφāĻĒāύāĻžāϰ āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ Firebase Authentication āϕ⧋āĻĄ āĻ•āĻžāϜ āĻ•āϰāϤ⧇ āĻĨāĻžāĻ•āĻŦ⧇āĨ¤

āĻŦ⧇āύāĻžāĻŽā§€ āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāĻŖ

āωāĻˇā§āĻŖ āĻ…āύāĻŦā§‹āĻ°ā§āĻĄāĻŋāĻ‚āϝāĻŧ⧇āϰ āϜāĻ¨ā§āϝ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻŦ⧇āύāĻžāĻŽā§€ āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāĻŖ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ

āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϰāĻž āĻĒā§āϰāĻ•ā§ƒāϤāĻĒāĻ•ā§āώ⧇ āϏāĻžāχāύ āχāύ āĻ•āϰāĻžāϰ āφāϗ⧇ āϤāĻžāĻĻ⧇āϰ āϜāĻ¨ā§āϝ āĻŽā§ŒāϞāĻŋāĻ• āĻ…āĻŦāĻ¸ā§āĻĨāĻž āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāϤ⧇ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻŦ⧇āύāĻžāĻŽā§€ āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāĻŖ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ⧎ āĻŦ⧇āύāĻžāĻŽā§€ āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāĻŖ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϰ āϏāĻžāχāύ-āχāύ āĻāϰ āĻĒā§āϰāϤāĻŋāĻ¸ā§āĻĨāĻžāĻĒāύ āύāϝāĻŧ⧎

āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϰāĻž āĻ…āĻ¨ā§āϝ āĻĄāĻŋāĻ­āĻžāχāϏ⧇ āϤāĻžāĻĻ⧇āϰ āĻĄā§‡āϟāĻž āϚāĻžāχāϞ⧇ āĻ…āĻ¨ā§āϝ āϏāĻžāχāύ-āχāύ āĻĒāĻĻā§āϧāϤāĻŋāϤ⧇ āϰ⧂āĻĒāĻžāĻ¨ā§āϤāϰ āĻ•āϰ⧁āύ

āϝāĻĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀ āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧ āĻ¸ā§āĻŸā§‹āϰ⧇āϜ āϏāĻžāĻĢ āĻ•āϰ⧇ āĻŦāĻž āĻĄāĻŋāĻ­āĻžāχāϏāϗ⧁āϞāĻŋ āĻ¸ā§āϝ⧁āχāϚ āĻ•āϰ⧇ āϤāĻŦ⧇ āĻŦ⧇āύāĻžāĻŽā§€ āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāĻŖ āĻĄā§‡āϟāĻž āĻŦāϜāĻžāϝāĻŧ āĻĨāĻžāĻ•āĻŦ⧇ āύāĻž āĨ¤ āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻāĻ•āϟāĻŋ āĻĄāĻŋāĻ­āĻžāχāϏ⧇ āĻ…ā§āϝāĻžāĻĒ āϰāĻŋāĻ¸ā§āϟāĻžāĻ°ā§āĻŸā§‡āϰ āĻŦāĻžāχāϰ⧇āĻ“ āĻĄā§‡āϟāĻž āϚāĻžāϞāĻŋāϝāĻŧ⧇ āϝ⧇āϤ⧇ āϚāĻžāύ, āϤāĻžāĻšāϞ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϕ⧇ āĻāĻ•āϟāĻŋ āĻ¸ā§āĻĨāĻžāϝāĻŧā§€ āĻ…ā§āϝāĻžāĻ•āĻžāωāĻ¨ā§āĻŸā§‡ āϰ⧂āĻĒāĻžāĻ¨ā§āϤāϰ āĻ•āϰ⧁āύ āĨ¤

āϏ⧁āϰāĻ•ā§āώāĻž āύāĻŋāϝāĻŧāĻŽāϗ⧁āϞāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ āϝāĻžāϤ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āĻĻ⧇āϰ āϏāĻžāχāύ āχāύ āĻĒā§āϰāĻĻāĻžāύāĻ•āĻžāϰ⧀āϤ⧇ āϰ⧂āĻĒāĻžāĻ¨ā§āϤāϰāĻŋāϤ āĻ•āϰāĻž āĻŦāĻž āϤāĻžāĻĻ⧇āϰ āχāĻŽā§‡āϞ āϝāĻžāϚāĻžāχ āĻ•āϰāĻž āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧎

āϝ⧇ āϕ⧇āω āφāĻĒāύāĻžāϰ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇ āĻāĻ•āϟāĻŋ āĻŦ⧇āύāĻžāĻŽā§€ āĻ…ā§āϝāĻžāĻ•āĻžāωāĻ¨ā§āϟ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āĻāϟāĻŋ āĻŽāĻžāĻĨāĻžāϝāĻŧ āϰ⧇āϖ⧇, āϏāĻŽāĻ¸ā§āϤ āĻ…-āĻĒāĻžāĻŦāϞāĻŋāĻ• āĻĄā§‡āϟāĻž āϏ⧁āϰāĻ•ā§āώāĻž āύāĻŋāϝāĻŧāĻŽāϗ⧁āϞāĻŋāϰ āϏāĻžāĻĨ⧇ āϏ⧁āϰāĻ•ā§āώāĻŋāϤ āĻ•āϰ⧁āύ āϝ⧇āϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āϏāĻžāχāύ-āχāύ āĻĒāĻĻā§āϧāϤāĻŋ āĻŦāĻž āϝāĻžāϚāĻžāχ āĻ•āϰāĻž āχāĻŽā§‡āϞ āĻ āĻŋāĻ•āĻžāύāĻžāϗ⧁āϞāĻŋāϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ ⧎

āϝ⧇āĻŽāύ:

allow write: if request.auth.token.firebase.sign_in_provider != "anonymous";
allow write: if request.auth.token.email_verified = true;

Cloud Functions āύāĻŋāϰāĻžāĻĒāĻ¤ā§āϤāĻž

āĻĒāϰāĻŋāĻŦ⧇āĻļ⧇āϰ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ⧇ āĻ•āĻ–āύāχ āϏāĻ‚āĻŦ⧇āĻĻāύāĻļā§€āϞ āϤāĻĨā§āϝ āϰāĻžāĻ–āĻŦ⧇āύ āύāĻž

āĻĒā§āϰāĻžāϝāĻŧāχ āĻāĻ•āϟāĻŋ āĻ¸ā§āĻŦ-āĻšā§‹āĻ¸ā§āϟ āĻ•āϰāĻž Node.js āĻ…ā§āϝāĻžāĻĒ⧇, āφāĻĒāύāĻŋ āĻŦā§āϝāĻ•ā§āϤāĻŋāĻ—āϤ āϕ⧀āϗ⧁āϞāĻŋāϰ āĻŽāϤ⧋ āϏāĻ‚āĻŦ⧇āĻĻāύāĻļā§€āϞ āϤāĻĨā§āϝ āϧāĻžāϰāĻŖ āĻ•āϰāϤ⧇ āĻĒāϰāĻŋāĻŦ⧇āĻļ⧇āϰ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āύāĨ¤ Cloud Functions āĻāϟāĻŋ āĻ•āϰāĻŦ⧇āύ āύāĻž āĨ¤ āϝ⧇āĻšā§‡āϤ⧁ Cloud Functions āĻĢāĻžāĻ‚āĻļāύ āφāĻšā§āĻŦāĻžāύ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āĻĒāϰāĻŋāĻŦ⧇āĻļāϗ⧁āϞāĻŋāϕ⧇ āĻĒ⧁āύāϰāĻžāϝāĻŧ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇, āϤāĻžāχ āϏāĻ‚āĻŦ⧇āĻĻāύāĻļā§€āϞ āϤāĻĨā§āϝ āĻĒāϰāĻŋāĻŦ⧇āĻļ⧇ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāĻž āωāϚāĻŋāϤ āύāϝāĻŧ⧎

  • Firebase API āϕ⧀ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāϤ⧇ (āϝāĻž āĻ—ā§‹āĻĒāύ āύāϝāĻŧ ), āĻļ⧁āϧ⧁ āϕ⧋āĻĄā§‡ āĻāĻŽā§āĻŦ⧇āĻĄ āĻ•āϰ⧁āύāĨ¤

  • āφāĻĒāύāĻŋ āϝāĻĻāĻŋ Cloud Functions Firebase Admin SDK āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āύ, āϤāĻžāĻšāϞ⧇ āφāĻĒāύāĻžāϕ⧇ āĻ¸ā§āĻĒāĻˇā§āϟāĻ­āĻžāĻŦ⧇ āĻĒāϰāĻŋāώ⧇āĻŦāĻž āĻ…ā§āϝāĻžāĻ•āĻžāωāĻ¨ā§āĻŸā§‡āϰ āĻļāĻ‚āϏāĻžāĻĒāĻ¤ā§āϰāϗ⧁āϞāĻŋ āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ āύāĻž, āĻ•āĻžāϰāĻŖ Admin SDK āĻ¸ā§āĻŦāϝāĻŧāĻ‚āĻ•ā§āϰāĻŋāϝāĻŧāĻ­āĻžāĻŦ⧇ āĻļ⧁āϰ⧁ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āϏ⧇āϗ⧁āϞāĻŋ āĻ…āĻ°ā§āϜāύ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇⧎

  • āφāĻĒāύāĻŋ āϝāĻĻāĻŋ Google āĻāĻŦāĻ‚ Google Cloud API-āϕ⧇ āĻ•āϞ āĻ•āϰ⧇āύ āϝ⧇āϗ⧁āϞāĻŋāϰ āĻĒāϰāĻŋāώ⧇āĻŦāĻž āĻ…ā§āϝāĻžāĻ•āĻžāωāĻ¨ā§āĻŸā§‡āϰ āĻļāĻ‚āϏāĻžāĻĒāĻ¤ā§āϰ⧇āϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻšāϝāĻŧ, āϤāĻžāĻšāϞ⧇ Node.js-āĻāϰ āϜāĻ¨ā§āϝ Google Auth āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āĻĄāĻŋāĻĢāĻ˛ā§āϟ āĻļāĻ‚āϏāĻžāĻĒāĻ¤ā§āϰāϗ⧁āϞāĻŋ āĻĨ⧇āϕ⧇ āĻāχ āĻļāĻ‚āϏāĻžāĻĒāĻ¤ā§āϰāϗ⧁āϞāĻŋ āĻĒ⧇āϤ⧇ āĻĒāĻžāϰ⧇, āϝāĻž Cloud Functions āĻ¸ā§āĻŦāϝāĻŧāĻ‚āĻ•ā§āϰāĻŋāϝāĻŧāĻ­āĻžāĻŦ⧇ āϜāĻŽāĻž āĻšāϝāĻŧ⧎

  • āφāĻĒāύāĻžāϰ Cloud Functions āĻ…-Google āĻĒāϰāĻŋāώ⧇āĻŦāĻžāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āĻŦā§āϝāĻ•ā§āϤāĻŋāĻ—āϤ āϕ⧀ āĻāĻŦāĻ‚ āĻļāĻ‚āϏāĻžāĻĒāĻ¤ā§āϰāϗ⧁āϞāĻŋ āωāĻĒāϞāĻŦā§āϧ āĻ•āϰāϤ⧇, Secret Manager āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ⧎

āϏāĻ‚āĻŦ⧇āĻĻāύāĻļā§€āϞ āϤāĻĨā§āϝ āĻāύāĻ•ā§āϰāĻŋāĻĒā§āϟ āĻ•āϰ⧁āύ

āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āφāĻĒāύāĻžāϰ āĻĢāĻžāĻ‚āĻļāύ⧇ āϏāĻ‚āĻŦ⧇āĻĻāύāĻļā§€āϞ āϤāĻĨā§āϝ āĻĒāĻžāϏ āĻ•āϰāĻž āĻāĻĄāĻŧāĻžāϤ⧇ āύāĻž āĻĒāĻžāϰ⧇āύ, āϤāĻžāĻšāϞ⧇ āφāĻĒāύāĻžāϕ⧇ āĻ…āĻŦāĻļā§āϝāχ āϤāĻĨā§āϝ āĻāύāĻ•ā§āϰāĻŋāĻĒā§āϟ āĻ•āϰāϤ⧇ āφāĻĒāύāĻžāϰ āύāĻŋāϜāĻ¸ā§āĻŦ āĻ•āĻžāĻ¸ā§āϟāĻŽ āϏāĻŽāĻžāϧāĻžāύ āύāĻŋāϝāĻŧ⧇ āφāϏāϤ⧇ āĻšāĻŦ⧇āĨ¤

āϏāĻšāϜ āĻĢāĻžāĻ‚āĻļāύ āύāĻŋāϰāĻžāĻĒāĻĻ; āφāĻĒāύāĻžāϰ āϝāĻĻāĻŋ āϜāϟāĻŋāϞāϤāĻžāϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻšāϝāĻŧ, Cloud Run āĻŦāĻŋāĻŦ⧇āϚāύāĻž āĻ•āϰ⧁āύ

āφāĻĒāύāĻžāϰ āĻĢāĻžāĻ‚āĻļāύāϗ⧁āϞāĻŋāϕ⧇ āϝāϤāϟāĻž āϏāĻŽā§āĻ­āĻŦ āĻŽā§ŒāϞāĻŋāĻ• āĻāĻŦāĻ‚ āĻŦā§‹āϧāĻ—āĻŽā§āϝ āϰāĻžāĻ–āĻžāϰ āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰ⧁āύāĨ¤ āφāĻĒāύāĻžāϰ āĻĢāĻžāĻ‚āĻļāύ⧇ āϜāϟāĻŋāϞāϤāĻž āĻĒā§āϰāĻžāϝāĻŧāχ āĻšāĻžāĻ°ā§āĻĄ-āϟ⧁-āĻ¸ā§āĻĒāϟ āĻŦāĻžāĻ— āĻŦāĻž āĻ…āĻĒā§āϰāĻ¤ā§āϝāĻžāĻļāĻŋāϤ āφāϚāϰāϪ⧇āϰ āĻĻāĻŋāϕ⧇ āύāĻŋāϝāĻŧ⧇ āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤

āφāĻĒāύāĻžāϰ āϝāĻĻāĻŋ āϜāϟāĻŋāϞ āϝ⧁āĻ•ā§āϤāĻŋ āĻŦāĻž āĻĒāϰāĻŋāĻŦ⧇āĻļ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ⧇āϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻšāϝāĻŧ, Cloud Functions āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ Cloud Run āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āĻ•āĻĨāĻž āĻŦāĻŋāĻŦ⧇āϚāύāĻž āĻ•āϰ⧁āύāĨ¤

āĻĒāϰāĻŋāĻŦ⧇āĻļ āĻŦā§āϝāĻŦāĻ¸ā§āĻĨāĻžāĻĒāύāĻž

āωāĻ¨ā§āύāϝāĻŧāύ āĻāĻŦāĻ‚ āĻŽāĻžā§āϚāĻžāϝāĻŧāύ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ āϏ⧇āϟ āφāĻĒ āĻ•āϰ⧁āύ

āĻĄā§‡āϭ⧇āϞāĻĒāĻŽā§‡āĻ¨ā§āϟ, āĻ¸ā§āĻŸā§‡āϜāĻŋāĻ‚ āĻāĻŦāĻ‚ āĻĒā§āϰ⧋āĻĄāĻžāĻ•āĻļāύ⧇āϰ āϜāĻ¨ā§āϝ āφāϞāĻžāĻĻāĻž āĻĢāĻžāϝāĻŧāĻžāϰāĻŦ⧇āϏ āĻĒā§āϰ⧋āĻœā§‡āĻ•ā§āϟ āϏ⧇āϟ āφāĻĒ āĻ•āϰ⧁āύāĨ¤ āĻ¸ā§āĻŸā§‡āϜāĻŋāĻ‚ āĻĒā§āϰāĻœā§‡āĻ•ā§āĻŸā§‡āϰ āĻŦāĻŋāϰ⧁āĻĻā§āϧ⧇ āĻĒāϰ⧀āĻ•ā§āώāĻž āύāĻž āĻšāĻ“āϝāĻŧāĻž āĻĒāĻ°ā§āϝāĻ¨ā§āϤ āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āϟ āϕ⧋āĻĄāϕ⧇ āĻĒā§āϰ⧋āĻĄāĻžāĻ•āĻļāύ⧇ āĻŽāĻžāĻ°ā§āϜ āĻ•āϰāĻŦ⧇āύ āύāĻžāĨ¤

āĻĒā§āϰ⧋āĻĄāĻžāĻ•āĻļāύ āĻĄā§‡āϟāĻžāϤ⧇ āϟāĻŋāĻŽā§‡āϰ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏ āϏ⧀āĻŽāĻŋāϤ āĻ•āϰ⧁āύ

āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻāĻ•āϟāĻŋ āĻŦ⧃āĻšāĻ¤ā§āϤāϰ āĻĻāϞ⧇āϰ āϏāĻžāĻĨ⧇ āĻ•āĻžāϜ āĻ•āϰ⧇āύ, āϤāĻžāĻšāϞ⧇ āφāĻĒāύāĻŋ āĻĒā§‚āĻ°ā§āĻŦāύāĻŋāĻ°ā§āϧāĻžāϰāĻŋāϤ IAM āĻ­ā§‚āĻŽāĻŋāĻ•āĻž āĻŦāĻž āĻ•āĻžāĻ¸ā§āϟāĻŽ IAM āĻ­ā§‚āĻŽāĻŋāĻ•āĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āωāĻ¤ā§āĻĒāĻžāĻĻāύ āĻĄā§‡āϟāĻžāϤ⧇ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏ āϏ⧀āĻŽāĻŋāϤ āĻ•āϰ⧇ āϭ⧁āϞ āĻāĻŦāĻ‚ āϞāĻ™ā§āϘāύ⧇āϰ āĻĒāϰāĻŋāĻŖāϤāĻŋāϗ⧁āϞāĻŋ āĻšā§āϰāĻžāϏ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ⧎

āϝāĻĻāĻŋ āφāĻĒāύāĻžāϰ āϟāĻŋāĻŽ Firebase Local Emulator Suite (āĻĒā§āϰāĻ¸ā§āϤāĻžāĻŦāĻŋāϤ) āĻĄā§‡āϭ⧇āϞāĻĒāĻŽā§‡āĻ¨ā§āĻŸā§‡āϰ āϜāĻ¨ā§āϝ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇, āϤāĻžāĻšāϞ⧇ āφāĻĒāύāĻžāϕ⧇ āĻĒā§āϰ⧋āĻĄāĻžāĻ•āĻļāύ āĻĒā§āϰ⧋āĻœā§‡āĻ•ā§āĻŸā§‡ āĻŦ⧃āĻšāĻ¤ā§āϤāϰ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏ āĻĻ⧇āĻ“āϝāĻŧāĻžāϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āύāĻžāĻ“ āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤

āĻ—ā§āϰāĻ¨ā§āĻĨāĻžāĻ—āĻžāϰ āĻŦā§āϝāĻŦāĻ¸ā§āĻĨāĻžāĻĒāύāĻž

āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋāϰ āϭ⧁āϞ āĻŦāĻžāύāĻžāύ āĻŦāĻž āύāϤ⧁āύ āϰāĻ•ā§āώāĻŖāĻžāĻŦ⧇āĻ•ā§āώāĻŖāĻ•āĻžāϰ⧀āĻĻ⧇āϰ āϜāĻ¨ā§āϝ āϏāϤāĻ°ā§āĻ• āĻĨāĻžāϕ⧁āύ

āφāĻĒāύāĻžāϰ āĻĒā§āϰāĻœā§‡āĻ•ā§āĻŸā§‡ āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋ āϝ⧋āĻ— āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ, āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋāϰ āύāĻžāĻŽ āĻāĻŦāĻ‚ āĻāϰ āϰāĻ•ā§āώāĻŖāĻžāĻŦ⧇āĻ•ā§āώāĻŖāĻ•āĻžāϰ⧀āĻĻ⧇āϰ āĻĒā§āϰāϤāĻŋ āĻ—āĻ­ā§€āϰ āĻŽāύ⧋āϝ⧋āĻ— āĻĻāĻŋāύāĨ¤ āφāĻĒāύāĻŋ āϝ⧇āϟāĻŋ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāϤ⧇ āϚāĻžāύ āϤāĻžāϰ āĻ…āύ⧁āϰ⧂āĻĒ-āύāĻžāĻŽāϝ⧁āĻ•ā§āϤ āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋāϤ⧇ āĻ•ā§āώāϤāĻŋāĻ•āĻžāϰāĻ• āϕ⧋āĻĄ āĻĨāĻžāĻ•āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤

āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύāϗ⧁āϞāĻŋ āύāĻž āĻŦ⧁āĻā§‡ āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻŦ⧇āύ āύāĻž

āφāĻĒāĻ—ā§āϰ⧇āĻĄ āĻ•āϰāĻžāϰ āφāϗ⧇ āφāĻĒāύāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϝ⧇āϕ⧋āύ⧋ āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋāϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āϞāĻ—āϗ⧁āϞāĻŋ āĻĻ⧇āϖ⧁āύāĨ¤ āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰ⧁āύ āϝ⧇ āφāĻĒāĻ—ā§āϰ⧇āĻĄ āĻŽāĻžāύ āϝ⧋āĻ— āĻ•āϰ⧇, āĻāĻŦāĻ‚ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰ⧇ āĻĻ⧇āϖ⧁āύ āϝ⧇ āϰāĻ•ā§āώāĻŖāĻžāĻŦ⧇āĻ•ā§āώāĻŖāĻ•āĻžāϰ⧀ āĻāĻ–āύāĻ“ āφāĻĒāύāĻžāϰ āĻŦāĻŋāĻļā§āĻŦāĻžāϏāϝ⧋āĻ—ā§āϝ āĻāĻ•āϟāĻŋ āĻĒāĻ•ā§āώāĨ¤

āĻ“āϝāĻŧāĻžāϚāĻĄāĻ— āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋāϗ⧁āϞāĻŋāϕ⧇ āĻĄā§‡āĻ­ āĻŦāĻž āĻŸā§‡āĻ¸ā§āϟ āύāĻŋāĻ°ā§āĻ­āϰāϤāĻž āĻšāĻŋāϏāĻžāĻŦ⧇ āχāύāĻ¸ā§āϟāϞ āĻ•āϰ⧁āύ⧎

āĻ…āύāĻŋāϰāĻžāĻĒāĻĻ āύāĻŋāĻ°ā§āĻ­āϰāϤāĻžāϰ āϜāĻ¨ā§āϝ āφāĻĒāύāĻžāϰ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ āĻ¸ā§āĻ•ā§āϝāĻžāύ āĻ•āϰāϤ⧇ Snyk āĻāϰ āĻŽāϤ⧋ āĻāĻ•āϟāĻŋ āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύāĨ¤

Cloud Functions āϜāĻ¨ā§āϝ āĻŽāύāĻŋāϟāϰāĻŋāĻ‚ āϏ⧇āϟ āφāĻĒ āĻ•āϰ⧁āύ; āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋ āφāĻĒāĻĄā§‡āĻŸā§‡āϰ āĻĒāϰ⧇ āĻāϟāĻŋ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰ⧁āύ

āφāĻĒāύāĻŋ āϝāĻĻāĻŋ Cloud Functions āϞāĻ—āĻžāϰ SDK āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āύ, āϤāĻžāĻšāϞ⧇ āφāĻĒāύāĻŋ āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋ āφāĻĒāĻĄā§‡āĻŸā§‡āϰ āĻ•āĻžāϰāϪ⧇ āϏ⧃āĻˇā§āϟ āφāϚāϰāĻŖ āϏāĻš āĻ…āĻ¸ā§āĻŦāĻžāĻ­āĻžāĻŦāĻŋāĻ• āφāϚāϰāϪ⧇āϰ āύāĻŋāϰ⧀āĻ•ā§āώāĻŖ āĻāĻŦāĻ‚ āϏāϤāĻ°ā§āĻ• āĻšāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤