CINXE.COM

Add the Firebase Admin SDK to your server

<!doctype html> <html lang="en" dir="ltr"> <head><script type="text/javascript" src="/_static/js/bundle-playback.js?v=HxkREWBo" charset="utf-8"></script> <script type="text/javascript" src="/_static/js/wombat.js?v=txqj7nKC" charset="utf-8"></script> <script>window.RufflePlayer=window.RufflePlayer||{};window.RufflePlayer.config={"autoplay":"on","unmuteOverlay":"hidden"};</script> <script type="text/javascript" src="/_static/js/ruffle/ruffle.js"></script> <script type="text/javascript"> __wm.init("https://web.archive.org/web"); __wm.wombat("https://firebase.google.com/docs/admin/setup","20210428194054","https://web.archive.org/","web","/_static/", "1619638854"); </script> <link rel="stylesheet" type="text/css" href="/_static/css/banner-styles.css?v=S1zqJCYt" /> <link rel="stylesheet" type="text/css" href="/_static/css/iconochive.css?v=3PDvdIFv" /> <!-- End Wayback Rewrite JS Include --> <meta name="google-signin-client-id" content="721724668570-nbkv1cfusk7kk4eni4pjvepaus73b13t.apps.googleusercontent.com"> <meta name="google-signin-scope" content="profile email"> <meta property="og:site_name" content="Firebase"> <meta property="og:type" content="website"> <meta name="theme-color" content="#039be5"> <meta charset="utf-8"> <meta content="IE=Edge" http-equiv="X-UA-Compatible"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="manifest" href="/web/20210428194054/https://firebase.google.com/_pwa/firebase/manifest.json" crossorigin="use-credentials"> <link rel="preconnect" href="//web.archive.org/web/20210428194054/https://www.gstatic.com/" crossorigin> <link rel="preconnect" href="//web.archive.org/web/20210428194054/https://fonts.gstatic.com/" crossorigin> <link rel="preconnect" href="//web.archive.org/web/20210428194054/https://fonts.googleapis.com/" crossorigin> <link rel="preconnect" href="//web.archive.org/web/20210428194054/https://apis.google.com/" crossorigin> <link rel="preconnect" href="//web.archive.org/web/20210428194054/https://www.google-analytics.com/" crossorigin> <link rel="stylesheet" href="//web.archive.org/web/20210428194054cs_/https://fonts.googleapis.com/css?family=Google+Sans:400,500|Roboto:400,400italic,500,500italic,700,700italic|Roboto+Mono:400,500,700|Material+Icons"> <link rel="stylesheet" href="https://web.archive.org/web/20210428194054cs_/https://www.gstatic.com/devrel-devsite/prod/v03a3d4c6437e99a41d40c6bdaf7de2967257b2f68f85375303e5316db6e039e3/firebase/css/app.css"> <link rel="shortcut icon" href="https://web.archive.org/web/20210428194054im_/https://www.gstatic.com/devrel-devsite/prod/v03a3d4c6437e99a41d40c6bdaf7de2967257b2f68f85375303e5316db6e039e3/firebase/images/favicon.png"> <link rel="apple-touch-icon" href="https://web.archive.org/web/20210428194054im_/https://www.gstatic.com/devrel-devsite/prod/v03a3d4c6437e99a41d40c6bdaf7de2967257b2f68f85375303e5316db6e039e3/firebase/images/touchicon-180.png"><link rel="canonical" href="https://web.archive.org/web/20210428194054/https://firebase.google.com/docs/admin/setup"><link rel="search" type="application/opensearchdescription+xml" title="Firebase" href="https://web.archive.org/web/20210428194054/https://firebase.google.com/s/opensearch.xml"> <title>Add the Firebase Admin SDK to your server</title> <meta property="og:title" content="Add the Firebase Admin SDK to your server"> <meta property="og:url" content="https://web.archive.org/web/20210428194054/https://firebase.google.com/docs/admin/setup"> <meta property="og:locale" content="en"> <meta name="gtm_var" data-key="docType" data-value="get-started"> </head> <body class="" template="page" theme="firebase-theme" type="article" layout="docs" pending> <devsite-progress type="indeterminate" id="app-progress"></devsite-progress> <section class="devsite-wrapper"><devsite-header> <div class="devsite-header--inner nocontent"> <div class="devsite-top-logo-row-wrapper-wrapper"> <div class="devsite-top-logo-row-wrapper"> <div class="devsite-top-logo-row"> <button type="button" id="devsite-hamburger-menu" class="devsite-header-icon-button button-flat material-icons gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Navigation menu button" visually-hidden aria-label="Open menu"> </button> <div class="devsite-product-name-wrapper"> <a href="/web/20210428194054/https://firebase.google.com/" class="devsite-site-logo-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Site logo" track-type="globalNav" track-name="firebase" track-metadata-position="nav" track-metadata-eventdetail="nav"> <img src="https://web.archive.org/web/20210428194054im_/https://www.gstatic.com/devrel-devsite/prod/v03a3d4c6437e99a41d40c6bdaf7de2967257b2f68f85375303e5316db6e039e3/firebase/images/lockup.png" class="devsite-site-logo" alt="Firebase"> </a> <span class="devsite-product-name"> <ul class="devsite-breadcrumb-list"> <li class="devsite-breadcrumb-item "> </li> </ul> </span> </div> <div class="devsite-top-logo-row-middle"> <div class="devsite-header-upper-tabs"> <devsite-tabs class="upper-tabs"> <nav class="devsite-tabs-wrapper" aria-label="Upper tabs"> <tab dropdown> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/products-build" class="gc-analytics-event " track-type="globalNav" track-metadata-position="nav" track-metadata-eventdetail="nav" track-name="products" data-category="Site-Wide Custom Events" data-label="Tab: Products"> Products </a> <a href="#" role="button" aria-haspopup="true" aria-expanded="false" aria-label="Dropdown menu for Products" track-type="globalNav" track-metadata-position="nav" track-metadata-eventdetail="nav" track-name="products" data-category="Site-Wide Custom Events" data-label="Tab: Products" class="devsite-tabs-dropdown-toggle devsite-icon devsite-icon-arrow-drop-down"></a> <div class="devsite-tabs-dropdown" aria-label="submenu" hidden> <div class="devsite-tabs-dropdown-content"> <div class="devsite-tabs-dropdown-column "> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/products-build" track-type="navMenu" track-name="Build" track-metadata-position="nav" track-metadata-href="https://firebase.google.com/products-build" tooltip> <div class="devsite-nav-item-title"> Build </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/products-release" track-type="navMenu" track-name="Release &amp; Monitor" track-metadata-position="nav" track-metadata-href="https://firebase.google.com/products-release" tooltip> <div class="devsite-nav-item-title"> Release &amp; Monitor </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/products-engage" track-type="navMenu" track-name="Engage" track-metadata-position="nav" track-metadata-href="https://firebase.google.com/products-engage" tooltip> <div class="devsite-nav-item-title"> Engage </div> </a> </li> </ul> </div> </div> </div> </tab> <tab> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/use-cases" class="gc-analytics-event " track-type="globalNav" track-metadata-position="nav" track-metadata-eventdetail="nav" track-name="useCases" data-category="Site-Wide Custom Events" data-label="Tab: Use Cases"> Use Cases </a> </tab> <tab> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/pricing" class="gc-analytics-event " track-type="globalNav" track-metadata-position="nav" track-metadata-eventdetail="nav" track-name="pricing" data-category="Site-Wide Custom Events" data-label="Tab: Pricing"> Pricing </a> </tab> <tab dropdown active> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/docs" class="gc-analytics-event " track-type="globalNav" track-metadata-position="nav" track-metadata-eventdetail="nav" track-name="docs" aria-label="Docs, selected" data-category="Site-Wide Custom Events" data-label="Tab: Docs"> Docs </a> <a href="#" role="button" aria-haspopup="true" aria-expanded="false" aria-label="Dropdown menu for Docs" track-type="globalNav" track-metadata-position="nav" track-metadata-eventdetail="nav" track-name="docs" data-category="Site-Wide Custom Events" data-label="Tab: Docs" class="devsite-tabs-dropdown-toggle devsite-icon devsite-icon-arrow-drop-down"></a> <div class="devsite-tabs-dropdown" aria-label="submenu" hidden> <div class="devsite-tabs-dropdown-content"> <div class="devsite-tabs-dropdown-column "> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/docs" track-type="navMenu" track-name="Overview" track-metadata-position="nav" track-metadata-href="https://firebase.google.com/docs" tooltip> <div class="devsite-nav-item-title"> Overview </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/docs/guides" track-type="navMenu" track-name="Fundamentals" track-metadata-position="nav" track-metadata-href="https://firebase.google.com/docs/guides" tooltip> <div class="devsite-nav-item-title"> Fundamentals </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/docs/build" track-type="navMenu" track-name="Build" track-metadata-position="nav" track-metadata-href="https://firebase.google.com/docs/build" tooltip> <div class="devsite-nav-item-title"> Build </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/docs/release" track-type="navMenu" track-name="Release &amp; Monitor" track-metadata-position="nav" track-metadata-href="https://firebase.google.com/docs/release" tooltip> <div class="devsite-nav-item-title"> Release &amp; Monitor </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/docs/engage" track-type="navMenu" track-name="Engage" track-metadata-position="nav" track-metadata-href="https://firebase.google.com/docs/engage" tooltip> <div class="devsite-nav-item-title"> Engage </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/docs/reference" track-type="navMenu" track-name="Reference" track-metadata-position="nav" track-metadata-href="https://firebase.google.com/docs/reference" tooltip> <div class="devsite-nav-item-title"> Reference </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/docs/samples" track-type="navMenu" track-name="Samples" track-metadata-position="nav" track-metadata-href="https://firebase.google.com/docs/samples" tooltip> <div class="devsite-nav-item-title"> Samples </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/docs/libraries" track-type="navMenu" track-name="Libraries" track-metadata-position="nav" track-metadata-href="https://firebase.google.com/docs/libraries" tooltip> <div class="devsite-nav-item-title"> Libraries </div> </a> </li> </ul> </div> </div> </div> </tab> <tab> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/community" class="gc-analytics-event " track-type="globalNav" track-metadata-position="nav" track-metadata-eventdetail="nav" track-name="community" data-category="Site-Wide Custom Events" data-label="Tab: Community"> Community </a> </tab> <tab> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/support" class="gc-analytics-event " track-type="globalNav" track-metadata-position="nav" track-metadata-eventdetail="nav" track-name="support" data-category="Site-Wide Custom Events" data-label="Tab: Support"> Support </a> </tab> </nav> </devsite-tabs> </div> <devsite-search aria-expanded="false" aria-haspopup="listbox" enable-signin enable-search enable-suggestions enable-query-completion project-name="Firebase" tenant-name="Firebase" role="combobox"> <form class="devsite-search-form" action="https://web.archive.org/web/20210428194054/https://firebase.google.com/s/results" method="GET"> <div class="devsite-search-container"> <div class="devsite-searchbox"> <input aria-activedescendant="" aria-autocomplete="list" aria-label="Search" aria-haspopup="false" aria-multiline="false" aria-label="Search box" autocomplete="off" class="devsite-search-field devsite-search-query" name="q" placeholder="Search" role="combobox" type="text" value=""> <div class="devsite-search-image material-icons" aria-hidden="true"></div> </div> <button type="button" search-open class="devsite-search-button devsite-header-icon-button button-flat material-icons" aria-label="Open search"></button> </div> </form> <button type="button" search-close class="devsite-search-button devsite-header-icon-button button-flat material-icons" aria-label="Close search"></button> </devsite-search> </div> <devsite-language-selector> <devsite-select class="devsite-language-selector-menu"> <select aria-label="Select your language preference." class="devsite-language-selector-select" name="language" track-name="click" track-type="languageSelector"> <option>Language</option> <option value="en" lang="en" track-metadata-original-language="en" track-metadata-selected-language="en" track-name="changed" track-type="languageSelector"> English </option> <option value="id" lang="id" track-metadata-original-language="en" track-metadata-selected-language="id" track-name="changed" track-type="languageSelector"> Bahasa Indonesia </option> <option value="de" lang="de" track-metadata-original-language="en" track-metadata-selected-language="de" track-name="changed" track-type="languageSelector"> Deutsch </option> <option value="es_419" lang="es_419" track-metadata-original-language="en" track-metadata-selected-language="es_419" track-name="changed" track-type="languageSelector"> Español – América Latina </option> <option value="fr" lang="fr" track-metadata-original-language="en" track-metadata-selected-language="fr" track-name="changed" track-type="languageSelector"> Français </option> <option value="it" lang="it" track-metadata-original-language="en" track-metadata-selected-language="it" track-name="changed" track-type="languageSelector"> Italiano </option> <option value="pl" lang="pl" track-metadata-original-language="en" track-metadata-selected-language="pl" track-name="changed" track-type="languageSelector"> Polski </option> <option value="pt_br" lang="pt_br" track-metadata-original-language="en" track-metadata-selected-language="pt_br" track-name="changed" track-type="languageSelector"> Português – Brasil </option> <option value="vi" lang="vi" track-metadata-original-language="en" track-metadata-selected-language="vi" track-name="changed" track-type="languageSelector"> Tiếng Việt </option> <option value="tr" lang="tr" track-metadata-original-language="en" track-metadata-selected-language="tr" track-name="changed" track-type="languageSelector"> Türkçe </option> <option value="ru" lang="ru" track-metadata-original-language="en" track-metadata-selected-language="ru" track-name="changed" track-type="languageSelector"> Русский </option> <option value="he" lang="he" track-metadata-original-language="en" track-metadata-selected-language="he" track-name="changed" track-type="languageSelector"> עברית&#39; </option> <option value="ar" lang="ar" track-metadata-original-language="en" track-metadata-selected-language="ar" track-name="changed" track-type="languageSelector"> العربيّة </option> <option value="fa" lang="fa" track-metadata-original-language="en" track-metadata-selected-language="fa" track-name="changed" track-type="languageSelector"> فارسی </option> <option value="hi" lang="hi" track-metadata-original-language="en" track-metadata-selected-language="hi" track-name="changed" track-type="languageSelector"> हिंदी </option> <option value="bn" lang="bn" track-metadata-original-language="en" track-metadata-selected-language="bn" track-name="changed" track-type="languageSelector"> বাংলা </option> <option value="th" lang="th" track-metadata-original-language="en" track-metadata-selected-language="th" track-name="changed" track-type="languageSelector"> ภาษาไทย </option> <option value="zh_cn" lang="zh_cn" track-metadata-original-language="en" track-metadata-selected-language="zh_cn" track-name="changed" track-type="languageSelector"> 中文 – 简体 </option> <option value="zh_tw" lang="zh_tw" track-metadata-original-language="en" track-metadata-selected-language="zh_tw" track-name="changed" track-type="languageSelector"> 中文 – 繁體 </option> <option value="ja" lang="ja" track-metadata-original-language="en" track-metadata-selected-language="ja" track-name="changed" track-type="languageSelector"> 日本語 </option> <option value="ko" lang="ko" track-metadata-original-language="en" track-metadata-selected-language="ko" track-name="changed" track-type="languageSelector"> 한국어 </option> </select> </devsite-select> </devsite-language-selector> <a class="devsite-header-link devsite-top-button button gc-analytics-event" href="//web.archive.org/web/20210428194054/https://console.firebase.google.com/" data-category="Site-Wide Custom Events" data-label="Site header link"> Go to console </a> <devsite-user enable-profiles fp-auth id="devsite-user"></devsite-user> </div> </div> </div> <div class="devsite-collapsible-section "> <div class="devsite-header-background"> <div class="devsite-product-id-row"> <div class="devsite-product-description-row"> <ul class="devsite-breadcrumb-list"> <li class="devsite-breadcrumb-item "> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/docs" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Lower Header" data-value="1" track-type="globalNav" track-name="breadcrumb" track-metadata-position="1" track-metadata-eventdetail=""> Documentation </a> </li> </ul> </div> </div> <div class="devsite-doc-set-nav-row"> <devsite-tabs class="lower-tabs"> <nav class="devsite-tabs-wrapper" aria-label="Lower tabs"> <tab> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/docs" class="gc-analytics-event " track-type="globalNav" track-metadata-position="nav" track-metadata-eventdetail="nav" track-name="overview" data-category="Site-Wide Custom Events" data-label="Tab: Overview"> Overview </a> </tab> <tab dropdown active> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/docs/guides" class="gc-analytics-event " track-type="globalNav" track-metadata-position="nav" track-metadata-eventdetail="nav" track-name="fundamentals" aria-label="Fundamentals, selected" data-category="Site-Wide Custom Events" data-label="Tab: Fundamentals"> Fundamentals </a> <a href="#" role="button" aria-haspopup="true" aria-expanded="false" aria-label="Dropdown menu for Fundamentals" track-type="globalNav" track-metadata-position="nav" track-metadata-eventdetail="nav" track-name="fundamentals" data-category="Site-Wide Custom Events" data-label="Tab: Fundamentals" class="devsite-tabs-dropdown-toggle devsite-icon devsite-icon-arrow-drop-down"></a> <div class="devsite-tabs-dropdown" aria-label="submenu" hidden> <div class="devsite-tabs-dropdown-content"> <div class="devsite-tabs-dropdown-column "> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/docs/ios/setup" track-type="navMenu" track-name="Add Firebase - iOS" track-metadata-position="nav" track-metadata-href="https://firebase.google.com/docs/ios/setup" tooltip> <div class="devsite-nav-item-title"> Add Firebase - iOS </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/docs/android/setup" track-type="navMenu" track-name="Add Firebase - Android" track-metadata-position="nav" track-metadata-href="https://firebase.google.com/docs/android/setup" tooltip> <div class="devsite-nav-item-title"> Add Firebase - Android </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/docs/web/setup" track-type="navMenu" track-name="Add Firebase - Web" track-metadata-position="nav" track-metadata-href="https://firebase.google.com/docs/web/setup" tooltip> <div class="devsite-nav-item-title"> Add Firebase - Web </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/docs/cpp/setup" track-type="navMenu" track-name="Add Firebase - C++" track-metadata-position="nav" track-metadata-href="https://firebase.google.com/docs/cpp/setup" tooltip> <div class="devsite-nav-item-title"> Add Firebase - C++ </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/docs/unity/setup" track-type="navMenu" track-name="Add Firebase - Unity" track-metadata-position="nav" track-metadata-href="https://firebase.google.com/docs/unity/setup" tooltip> <div class="devsite-nav-item-title"> Add Firebase - Unity </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/docs/admin/setup" track-type="navMenu" track-name="Add Firebase - Server environments" track-metadata-position="nav" track-metadata-href="https://firebase.google.com/docs/admin/setup" tooltip> <div class="devsite-nav-item-title"> Add Firebase - Server environments </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/docs/projects/learn-more" track-type="navMenu" track-name="Manage Projects" track-metadata-position="nav" track-metadata-href="https://firebase.google.com/docs/projects/learn-more" tooltip> <div class="devsite-nav-item-title"> Manage Projects </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/docs/emulator-suite" track-type="navMenu" track-name="Use Emulator Suite" track-metadata-position="nav" track-metadata-href="https://firebase.google.com/docs/emulator-suite" tooltip> <div class="devsite-nav-item-title"> Use Emulator Suite </div> </a> </li> </ul> </div> </div> </div> </tab> <tab dropdown> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/docs/build" class="gc-analytics-event " track-type="globalNav" track-metadata-position="nav" track-metadata-eventdetail="nav" track-name="build" data-category="Site-Wide Custom Events" data-label="Tab: Build"> Build </a> <a href="#" role="button" aria-haspopup="true" aria-expanded="false" aria-label="Dropdown menu for Build" track-type="globalNav" track-metadata-position="nav" track-metadata-eventdetail="nav" track-name="build" data-category="Site-Wide Custom Events" data-label="Tab: Build" class="devsite-tabs-dropdown-toggle devsite-icon devsite-icon-arrow-drop-down"></a> <div class="devsite-tabs-dropdown" aria-label="submenu" hidden> <div class="devsite-tabs-dropdown-content"> <div class="devsite-tabs-dropdown-column "> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/docs/emulator-suite" track-type="navMenu" track-name="Emulator Suite" track-metadata-position="nav" track-metadata-href="https://firebase.google.com/docs/emulator-suite" tooltip> <div class="devsite-nav-item-title"> Emulator Suite </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/docs/auth" track-type="navMenu" track-name="Authentication" track-metadata-position="nav" track-metadata-href="https://firebase.google.com/docs/auth" tooltip> <div class="devsite-nav-item-title"> Authentication </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/docs/database" track-type="navMenu" track-name="Realtime Database" track-metadata-position="nav" track-metadata-href="https://firebase.google.com/docs/database" tooltip> <div class="devsite-nav-item-title"> Realtime Database </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/docs/firestore" track-type="navMenu" track-name="Firestore" track-metadata-position="nav" track-metadata-href="https://firebase.google.com/docs/firestore" tooltip> <div class="devsite-nav-item-title"> Firestore </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/docs/storage" track-type="navMenu" track-name="Storage" track-metadata-position="nav" track-metadata-href="https://firebase.google.com/docs/storage" tooltip> <div class="devsite-nav-item-title"> Storage </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/docs/ml" track-type="navMenu" track-name="ML" track-metadata-position="nav" track-metadata-href="https://firebase.google.com/docs/ml" tooltip> <div class="devsite-nav-item-title"> ML </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/docs/hosting" track-type="navMenu" track-name="Hosting" track-metadata-position="nav" track-metadata-href="https://firebase.google.com/docs/hosting" tooltip> <div class="devsite-nav-item-title"> Hosting </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/docs/functions" track-type="navMenu" track-name="Cloud Functions" track-metadata-position="nav" track-metadata-href="https://firebase.google.com/docs/functions" tooltip> <div class="devsite-nav-item-title"> Cloud Functions </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/docs/rules" track-type="navMenu" track-name="Security Rules" track-metadata-position="nav" track-metadata-href="https://firebase.google.com/docs/rules" tooltip> <div class="devsite-nav-item-title"> Security Rules </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/docs/extensions" track-type="navMenu" track-name="Extensions" track-metadata-position="nav" track-metadata-href="https://firebase.google.com/docs/extensions" tooltip> <div class="devsite-nav-item-title"> Extensions </div> </a> </li> </ul> </div> </div> </div> </tab> <tab dropdown> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/docs/release" class="gc-analytics-event " track-type="globalNav" track-metadata-position="nav" track-metadata-eventdetail="nav" track-name="release&amp;Monitor" data-category="Site-Wide Custom Events" data-label="Tab: Release &amp; Monitor"> Release &amp; Monitor </a> <a href="#" role="button" aria-haspopup="true" aria-expanded="false" aria-label="Dropdown menu for Release &amp; Monitor" track-type="globalNav" track-metadata-position="nav" track-metadata-eventdetail="nav" track-name="release&amp;Monitor" data-category="Site-Wide Custom Events" data-label="Tab: Release &amp; Monitor" class="devsite-tabs-dropdown-toggle devsite-icon devsite-icon-arrow-drop-down"></a> <div class="devsite-tabs-dropdown" aria-label="submenu" hidden> <div class="devsite-tabs-dropdown-content"> <div class="devsite-tabs-dropdown-column "> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/docs/crashlytics" track-type="navMenu" track-name="Crashlytics" track-metadata-position="nav" track-metadata-href="https://firebase.google.com/docs/crashlytics" tooltip> <div class="devsite-nav-item-title"> Crashlytics </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/docs/test-lab" track-type="navMenu" track-name="Test Lab" track-metadata-position="nav" track-metadata-href="https://firebase.google.com/docs/test-lab" tooltip> <div class="devsite-nav-item-title"> Test Lab </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/docs/app-distribution" track-type="navMenu" track-name="App Distribution" track-metadata-position="nav" track-metadata-href="https://firebase.google.com/docs/app-distribution" tooltip> <div class="devsite-nav-item-title"> App Distribution </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/docs/perf-mon" track-type="navMenu" track-name="Performance Monitoring" track-metadata-position="nav" track-metadata-href="https://firebase.google.com/docs/perf-mon" tooltip> <div class="devsite-nav-item-title"> Performance Monitoring </div> </a> </li> </ul> </div> </div> </div> </tab> <tab dropdown> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/docs/engage" class="gc-analytics-event " track-type="globalNav" track-metadata-position="nav" track-metadata-eventdetail="nav" track-name="engage" data-category="Site-Wide Custom Events" data-label="Tab: Engage"> Engage </a> <a href="#" role="button" aria-haspopup="true" aria-expanded="false" aria-label="Dropdown menu for Engage" track-type="globalNav" track-metadata-position="nav" track-metadata-eventdetail="nav" track-name="engage" data-category="Site-Wide Custom Events" data-label="Tab: Engage" class="devsite-tabs-dropdown-toggle devsite-icon devsite-icon-arrow-drop-down"></a> <div class="devsite-tabs-dropdown" aria-label="submenu" hidden> <div class="devsite-tabs-dropdown-content"> <div class="devsite-tabs-dropdown-column "> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/docs/analytics" track-type="navMenu" track-name="Analytics" track-metadata-position="nav" track-metadata-href="https://firebase.google.com/docs/analytics" tooltip> <div class="devsite-nav-item-title"> Analytics </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/docs/remote-config" track-type="navMenu" track-name="Remote Config" track-metadata-position="nav" track-metadata-href="https://firebase.google.com/docs/remote-config" tooltip> <div class="devsite-nav-item-title"> Remote Config </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/docs/predictions" track-type="navMenu" track-name="Predictions" track-metadata-position="nav" track-metadata-href="https://firebase.google.com/docs/predictions" tooltip> <div class="devsite-nav-item-title"> Predictions </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/docs/ab-testing" track-type="navMenu" track-name="A/B Testing" track-metadata-position="nav" track-metadata-href="https://firebase.google.com/docs/ab-testing" tooltip> <div class="devsite-nav-item-title"> A/B Testing </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/docs/cloud-messaging" track-type="navMenu" track-name="Cloud Messaging" track-metadata-position="nav" track-metadata-href="https://firebase.google.com/docs/cloud-messaging" tooltip> <div class="devsite-nav-item-title"> Cloud Messaging </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/docs/in-app-messaging" track-type="navMenu" track-name="In-App Messaging" track-metadata-position="nav" track-metadata-href="https://firebase.google.com/docs/in-app-messaging" tooltip> <div class="devsite-nav-item-title"> In-App Messaging </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/docs/dynamic-links" track-type="navMenu" track-name="Dynamic Links" track-metadata-position="nav" track-metadata-href="https://firebase.google.com/docs/dynamic-links" tooltip> <div class="devsite-nav-item-title"> Dynamic Links </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/docs/admob" track-type="navMenu" track-name="Google AdMob" track-metadata-position="nav" track-metadata-href="https://firebase.google.com/docs/admob" tooltip> <div class="devsite-nav-item-title"> Google AdMob </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/docs/ads" track-type="navMenu" track-name="Google Ads" track-metadata-position="nav" track-metadata-href="https://firebase.google.com/docs/ads" tooltip> <div class="devsite-nav-item-title"> Google Ads </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/docs/app-indexing" track-type="navMenu" track-name="App Indexing" track-metadata-position="nav" track-metadata-href="https://firebase.google.com/docs/app-indexing" tooltip> <div class="devsite-nav-item-title"> App Indexing </div> </a> </li> </ul> </div> </div> </div> </tab> <tab> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/docs/reference" class="gc-analytics-event " track-type="globalNav" track-metadata-position="nav" track-metadata-eventdetail="nav" track-name="reference" data-category="Site-Wide Custom Events" data-label="Tab: Reference"> Reference </a> </tab> <tab> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/docs/samples" class="gc-analytics-event " track-type="globalNav" track-metadata-position="nav" track-metadata-eventdetail="nav" track-name="samples" data-category="Site-Wide Custom Events" data-label="Tab: Samples"> Samples </a> </tab> <tab> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/docs/libraries" class="gc-analytics-event " track-type="globalNav" track-metadata-position="nav" track-metadata-eventdetail="nav" track-name="libraries" data-category="Site-Wide Custom Events" data-label="Tab: Libraries"> Libraries </a> </tab> </nav> </devsite-tabs> </div> </div> </div> </div> </devsite-header> <devsite-book-nav scrollbars> <nav class="devsite-book-nav devsite-nav nocontent" aria-label="Side menu"> <div class="devsite-mobile-header"> <button type="button" id="devsite-close-nav" class="devsite-header-icon-button button-flat material-icons gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Close navigation" aria-label="Close navigation"> </button> <div class="devsite-product-name-wrapper"> <a href="/web/20210428194054/https://firebase.google.com/" class="devsite-site-logo-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Site logo" track-type="globalNav" track-name="firebase" track-metadata-position="nav" track-metadata-eventdetail="nav"> <img src="https://web.archive.org/web/20210428194054im_/https://www.gstatic.com/devrel-devsite/prod/v03a3d4c6437e99a41d40c6bdaf7de2967257b2f68f85375303e5316db6e039e3/firebase/images/lockup.png" class="devsite-site-logo" alt="Firebase"> </a> <span class="devsite-product-name"> <ul class="devsite-breadcrumb-list"> <li class="devsite-breadcrumb-item "> </li> </ul> </span> </div> </div> <div class="devsite-book-nav-wrapper"> <div class="devsite-mobile-nav-top"> <ul class="devsite-nav-list"> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/products-build" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Products" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="products"> <span class="devsite-nav-text" tooltip> Products </span> <span class="devsite-nav-icon material-icons" data-icon="forward"> </span> </a> <ul class="devsite-nav-responsive-tabs devsite-nav-has-menu "> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip> <span class="devsite-nav-text" tooltip menu="Products"> More </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="Products"> </span> </span> </li> </ul> </li> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/use-cases" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Use Cases" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="useCases"> <span class="devsite-nav-text" tooltip> Use Cases </span> <span class="devsite-nav-icon material-icons" data-icon="forward"> </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/pricing" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Pricing" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="pricing"> <span class="devsite-nav-text" tooltip> Pricing </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/docs" class="devsite-nav-title gc-analytics-event devsite-nav-active" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Docs" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="docs"> <span class="devsite-nav-text" tooltip> Docs </span> </a> <ul class="devsite-nav-responsive-tabs devsite-nav-has-menu "> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip> <span class="devsite-nav-text" tooltip menu="Docs"> More </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="Docs"> </span> </span> </li> </ul> <ul class="devsite-nav-responsive-tabs"> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/docs" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Overview" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="overview"> <span class="devsite-nav-text" tooltip> Overview </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/docs/guides" class="devsite-nav-title gc-analytics-event devsite-nav-has-children devsite-nav-active" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Fundamentals" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="fundamentals"> <span class="devsite-nav-text" tooltip menu="_book"> Fundamentals </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="_book"> </span> </a> <ul class="devsite-nav-responsive-tabs devsite-nav-has-menu devsite-lower-tab-item"> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip> <span class="devsite-nav-text" tooltip menu="Fundamentals"> More </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="Fundamentals"> </span> </span> </li> </ul> </li> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/docs/build" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Build" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="build"> <span class="devsite-nav-text" tooltip> Build </span> <span class="devsite-nav-icon material-icons" data-icon="forward"> </span> </a> <ul class="devsite-nav-responsive-tabs devsite-nav-has-menu devsite-lower-tab-item"> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip> <span class="devsite-nav-text" tooltip menu="Build"> More </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="Build"> </span> </span> </li> </ul> </li> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/docs/release" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Release &amp; Monitor" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="release&amp;Monitor"> <span class="devsite-nav-text" tooltip> Release &amp; Monitor </span> <span class="devsite-nav-icon material-icons" data-icon="forward"> </span> </a> <ul class="devsite-nav-responsive-tabs devsite-nav-has-menu devsite-lower-tab-item"> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip> <span class="devsite-nav-text" tooltip menu="Release &amp; Monitor"> More </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="Release &amp; Monitor"> </span> </span> </li> </ul> </li> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/docs/engage" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Engage" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="engage"> <span class="devsite-nav-text" tooltip> Engage </span> <span class="devsite-nav-icon material-icons" data-icon="forward"> </span> </a> <ul class="devsite-nav-responsive-tabs devsite-nav-has-menu devsite-lower-tab-item"> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip> <span class="devsite-nav-text" tooltip menu="Engage"> More </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="Engage"> </span> </span> </li> </ul> </li> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/docs/reference" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Reference" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="reference"> <span class="devsite-nav-text" tooltip> Reference </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/docs/samples" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Samples" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="samples"> <span class="devsite-nav-text" tooltip> Samples </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/docs/libraries" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Libraries" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="libraries"> <span class="devsite-nav-text" tooltip> Libraries </span> </a> </li> </ul> </li> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/community" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Community" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="community"> <span class="devsite-nav-text" tooltip> Community </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/support" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Support" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="support"> <span class="devsite-nav-text" tooltip> Support </span> </a> </li> <li class="devsite-nav-item"> <a href="//web.archive.org/web/20210428194054/https://console.firebase.google.com/" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Go to console" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="goToConsole"> <span class="devsite-nav-text" tooltip> Go to console </span> </a> </li> </ul> </div> <div class="devsite-mobile-nav-bottom" role="navigation"> <ul class="devsite-nav-list" menu="_book"> <li class="devsite-nav-item"><a href="/web/20210428194054/https://firebase.google.com/docs/guides" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Fundamentals</span></a></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Get started with Firebase</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Add Firebase to an app</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20210428194054/https://firebase.google.com/docs/ios/setup" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20210428194054/https://firebase.google.com/docs/android/setup" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</span></a></li><li class="devsite-nav-item"><a href="/web/20210428194054/https://firebase.google.com/docs/web/setup" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Web</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Add Firebase to a game</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20210428194054/https://firebase.google.com/docs/games/setup" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20210428194054/https://firebase.google.com/docs/cpp/setup" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>C++</span></a></li><li class="devsite-nav-item"><a href="/web/20210428194054/https://firebase.google.com/docs/unity/setup" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Unity</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item"><a href="/web/20210428194054/https://firebase.google.com/docs/admin/setup" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Add Firebase to a server</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Use Firebase with a framework</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20210428194054/https://firebase.google.com/docs/flutter/setup" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Flutter</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-beta"><a href="/web/20210428194054/https://firebase.google.com/docs/projects/api/workflow_set-up-and-manage-project" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Set up projects programmatically</span><span class="devsite-nav-icon material-icons" data-icon="beta" data-title="Beta" aria-hidden="true"></span></a></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Manage your Firebase projects</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20210428194054/https://firebase.google.com/docs/projects/learn-more" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Understand Firebase projects</span></a></li><li class="devsite-nav-item"><a href="/web/20210428194054/https://firebase.google.com/docs/projects/locations" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Select locations for your project</span></a></li><li class="devsite-nav-item"><a href="/web/20210428194054/https://firebase.google.com/docs/projects/multiprojects" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Configure multiple projects</span></a></li><li class="devsite-nav-item"><a href="/web/20210428194054/https://firebase.google.com/docs/projects/api-keys" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Learn about API keys for Firebase</span></a></li><li class="devsite-nav-item"><a href="/web/20210428194054/https://firebase.google.com/docs/projects/pwa" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use Firebase in PWAs</span></a></li><li class="devsite-nav-item devsite-nav-beta"><a href="/web/20210428194054/https://firebase.google.com/docs/projects/bigquery-export" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Export project data to BigQuery</span><span class="devsite-nav-icon material-icons" data-icon="beta" data-title="Beta" aria-hidden="true"></span></a></li><li class="devsite-nav-item"><a href="/web/20210428194054/https://firebase.google.com/docs/projects/manage-installations" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Manage Firebase installations</span></a></li><li class="devsite-nav-item devsite-nav-beta"><a href="/web/20210428194054/https://firebase.google.com/docs/projects/import-segments" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Import segments</span><span class="devsite-nav-icon material-icons" data-icon="beta" data-title="Beta" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"><span class="devsite-nav-text" tooltip>Manage projects programmatically</span></div></li><li class="devsite-nav-item devsite-nav-beta"><a href="/web/20210428194054/https://firebase.google.com/docs/projects/api/workflow_set-up-and-manage-project" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use the REST API</span><span class="devsite-nav-icon material-icons" data-icon="beta" data-title="Beta" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Use the Admin SDK</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20210428194054/https://firebase.google.com/docs/reference/admin/node/admin.projectManagement" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Node.js</span></a></li><li class="devsite-nav-item"><a href="/web/20210428194054/https://firebase.google.com/docs/reference/admin/java/reference/com/google/firebase/projectmanagement/package-summary" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Java</span></a></li><li class="devsite-nav-item"><a href="/web/20210428194054/https://firebase.google.com/docs/reference/admin/python/firebase_admin.project_management" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Python</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item"><a href="/web/20210428194054/https://firebase.google.com/docs/projects/provisioning/configure-oauth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Configure OAuth identity providers for Firebase Auth</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"><span class="devsite-nav-text" tooltip>Manage project access (IAM)</span></div></li><li class="devsite-nav-item"><a href="/web/20210428194054/https://firebase.google.com/docs/projects/iam/overview" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Roles</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20210428194054/https://firebase.google.com/docs/projects/iam/roles" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20210428194054/https://firebase.google.com/docs/projects/iam/roles-basic" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Owner, Editor, Viewer roles</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Firebase predefined roles</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20210428194054/https://firebase.google.com/docs/projects/iam/roles-predefined" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20210428194054/https://firebase.google.com/docs/projects/iam/roles-predefined-all-products" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Firebase-level roles</span></a></li><li class="devsite-nav-item"><a href="/web/20210428194054/https://firebase.google.com/docs/projects/iam/roles-predefined-category" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Product-category roles</span></a></li><li class="devsite-nav-item"><a href="/web/20210428194054/https://firebase.google.com/docs/projects/iam/roles-predefined-product" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Product-level roles</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item"><a href="/web/20210428194054/https://firebase.google.com/docs/projects/iam/roles-custom" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Custom roles</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item"><a href="/web/20210428194054/https://firebase.google.com/docs/projects/iam/permissions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Permissions</span></a></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Platforms and frameworks</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"><span class="devsite-nav-text" tooltip>iOS</span></div></li><li class="devsite-nav-item"><a href="/web/20210428194054/https://firebase.google.com/docs/ios/learn-more" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Learn about iOS + Firebase</span></a></li><li class="devsite-nav-item"><a href="/web/20210428194054/https://firebase.google.com/docs/ios/link-firebase-static-dynamic" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Link Firebase dependencies statically or dynamically</span></a></li><li class="devsite-nav-item"><a href="/web/20210428194054/https://firebase.google.com/docs/ios/app-store-data-collection" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Prepare for Apple App Store data disclosure requirements</span></a></li><li class="devsite-nav-item"><a href="/web/20210428194054/https://firebase.google.com/docs/ios/supporting-ios-14" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Supporting iOS 14</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"><span class="devsite-nav-text" tooltip>Android</span></div></li><li class="devsite-nav-item"><a href="/web/20210428194054/https://firebase.google.com/docs/android/learn-more" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Learn about Android + Firebase</span></a></li><li class="devsite-nav-item"><a href="/web/20210428194054/https://firebase.google.com/docs/android/android-play-services" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Dependencies of Firebase Android SDKs on Google Play services</span></a></li><li class="devsite-nav-item"><a href="/web/20210428194054/https://firebase.google.com/docs/android/integrate-play-games" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Integrate with your Play Games Services project</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"><span class="devsite-nav-text" tooltip>Web</span></div></li><li class="devsite-nav-item"><a href="/web/20210428194054/https://firebase.google.com/docs/web/learn-more" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Learn about Web + Firebase</span></a></li><li class="devsite-nav-item devsite-nav-beta"><a href="/web/20210428194054/https://firebase.google.com/docs/web/modular-upgrade" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Upgrade to the v9 modular SDK</span><span class="devsite-nav-icon material-icons" data-icon="beta" data-title="Beta" aria-hidden="true"></span></a></li><li class="devsite-nav-item"><a href="/web/20210428194054/https://firebase.google.com/docs/web/environments-js-sdk" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Supported environments for the Firebase JS SDK</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"><span class="devsite-nav-text" tooltip>Unity</span></div></li><li class="devsite-nav-item"><a href="/web/20210428194054/https://firebase.google.com/docs/unity/setup-alternative" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Additional installation options</span></a></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion devsite-nav-beta"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Prototype and test with Emulator Suite</span><span class="devsite-nav-icon material-icons" data-icon="beta" data-title="Beta" aria-hidden="true"></span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20210428194054/https://firebase.google.com/docs/emulator-suite" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Connect your app and prototype</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20210428194054/https://firebase.google.com/docs/emulator-suite/connect_and_prototype" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get started</span></a></li><li class="devsite-nav-item"><a href="/web/20210428194054/https://firebase.google.com/docs/emulator-suite/connect_auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Connect to the Authentication emulator</span></a></li><li class="devsite-nav-item"><a href="/web/20210428194054/https://firebase.google.com/docs/emulator-suite/connect_rtdb" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Connect to the Realtime Database emulator</span></a></li><li class="devsite-nav-item"><a href="/web/20210428194054/https://firebase.google.com/docs/emulator-suite/connect_firestore" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Connect to the Cloud Firestore emulator</span></a></li><li class="devsite-nav-item"><a href="/web/20210428194054/https://firebase.google.com/docs/emulator-suite/connect_functions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Connect to the Cloud Functions emulator</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item"><a href="/web/20210428194054/https://firebase.google.com/docs/emulator-suite/install_and_configure" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Install, configure and integrate</span></a></li></ul></devsite-expandable-nav></li> </ul> <ul class="devsite-nav-list" menu="Products" aria-label="Side menu" hidden> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/products-build" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Build" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="build"> <span class="devsite-nav-text" tooltip> Build </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/products-release" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Release &amp; Monitor" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="release&amp;Monitor"> <span class="devsite-nav-text" tooltip> Release &amp; Monitor </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/products-engage" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Engage" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="engage"> <span class="devsite-nav-text" tooltip> Engage </span> </a> </li> </ul> <ul class="devsite-nav-list" menu="Docs" aria-label="Side menu" hidden> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/docs" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Overview" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="overview"> <span class="devsite-nav-text" tooltip> Overview </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/docs/guides" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Fundamentals" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="fundamentals"> <span class="devsite-nav-text" tooltip> Fundamentals </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/docs/build" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Build" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="build"> <span class="devsite-nav-text" tooltip> Build </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/docs/release" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Release &amp; Monitor" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="release&amp;Monitor"> <span class="devsite-nav-text" tooltip> Release &amp; Monitor </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/docs/engage" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Engage" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="engage"> <span class="devsite-nav-text" tooltip> Engage </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/docs/reference" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Reference" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="reference"> <span class="devsite-nav-text" tooltip> Reference </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/docs/samples" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Samples" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="samples"> <span class="devsite-nav-text" tooltip> Samples </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/docs/libraries" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Libraries" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="libraries"> <span class="devsite-nav-text" tooltip> Libraries </span> </a> </li> </ul> <ul class="devsite-nav-list" menu="Fundamentals" aria-label="Side menu" hidden> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/docs/ios/setup" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Add Firebase - iOS" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="addFirebase-IOS"> <span class="devsite-nav-text" tooltip> Add Firebase - iOS </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/docs/android/setup" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Add Firebase - Android" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="addFirebase-Android"> <span class="devsite-nav-text" tooltip> Add Firebase - Android </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/docs/web/setup" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Add Firebase - Web" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="addFirebase-Web"> <span class="devsite-nav-text" tooltip> Add Firebase - Web </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/docs/cpp/setup" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Add Firebase - C++" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="addFirebase-C++"> <span class="devsite-nav-text" tooltip> Add Firebase - C++ </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/docs/unity/setup" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Add Firebase - Unity" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="addFirebase-Unity"> <span class="devsite-nav-text" tooltip> Add Firebase - Unity </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/docs/admin/setup" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Add Firebase - Server environments" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="addFirebase-ServerEnvironments"> <span class="devsite-nav-text" tooltip> Add Firebase - Server environments </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/docs/projects/learn-more" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Manage Projects" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="manageProjects"> <span class="devsite-nav-text" tooltip> Manage Projects </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/docs/emulator-suite" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Use Emulator Suite" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="useEmulatorSuite"> <span class="devsite-nav-text" tooltip> Use Emulator Suite </span> </a> </li> </ul> <ul class="devsite-nav-list" menu="Build" aria-label="Side menu" hidden> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/docs/emulator-suite" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Emulator Suite" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="emulatorSuite"> <span class="devsite-nav-text" tooltip> Emulator Suite </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/docs/auth" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Authentication" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="authentication"> <span class="devsite-nav-text" tooltip> Authentication </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/docs/database" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Realtime Database" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="realtimeDatabase"> <span class="devsite-nav-text" tooltip> Realtime Database </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/docs/firestore" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Firestore" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="firestore"> <span class="devsite-nav-text" tooltip> Firestore </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/docs/storage" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Storage" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="storage"> <span class="devsite-nav-text" tooltip> Storage </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/docs/ml" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: ML" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="mL"> <span class="devsite-nav-text" tooltip> ML </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/docs/hosting" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Hosting" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="hosting"> <span class="devsite-nav-text" tooltip> Hosting </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/docs/functions" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Cloud Functions" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="cloudFunctions"> <span class="devsite-nav-text" tooltip> Cloud Functions </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/docs/rules" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Security Rules" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="securityRules"> <span class="devsite-nav-text" tooltip> Security Rules </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/docs/extensions" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Extensions" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="extensions"> <span class="devsite-nav-text" tooltip> Extensions </span> </a> </li> </ul> <ul class="devsite-nav-list" menu="Release &amp; Monitor" aria-label="Side menu" hidden> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/docs/crashlytics" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Crashlytics" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="crashlytics"> <span class="devsite-nav-text" tooltip> Crashlytics </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/docs/test-lab" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Test Lab" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="testLab"> <span class="devsite-nav-text" tooltip> Test Lab </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/docs/app-distribution" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: App Distribution" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="appDistribution"> <span class="devsite-nav-text" tooltip> App Distribution </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/docs/perf-mon" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Performance Monitoring" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="performanceMonitoring"> <span class="devsite-nav-text" tooltip> Performance Monitoring </span> </a> </li> </ul> <ul class="devsite-nav-list" menu="Engage" aria-label="Side menu" hidden> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/docs/analytics" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Analytics" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="analytics"> <span class="devsite-nav-text" tooltip> Analytics </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/docs/remote-config" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Remote Config" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="remoteConfig"> <span class="devsite-nav-text" tooltip> Remote Config </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/docs/predictions" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Predictions" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="predictions"> <span class="devsite-nav-text" tooltip> Predictions </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/docs/ab-testing" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: A/B Testing" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="a/BTesting"> <span class="devsite-nav-text" tooltip> A/B Testing </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/docs/cloud-messaging" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Cloud Messaging" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="cloudMessaging"> <span class="devsite-nav-text" tooltip> Cloud Messaging </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/docs/in-app-messaging" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: In-App Messaging" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="in-AppMessaging"> <span class="devsite-nav-text" tooltip> In-App Messaging </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/docs/dynamic-links" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Dynamic Links" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="dynamicLinks"> <span class="devsite-nav-text" tooltip> Dynamic Links </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/docs/admob" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Google AdMob" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="googleAdMob"> <span class="devsite-nav-text" tooltip> Google AdMob </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/docs/ads" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Google Ads" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="googleAds"> <span class="devsite-nav-text" tooltip> Google Ads </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210428194054/https://firebase.google.com/docs/app-indexing" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: App Indexing" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="appIndexing"> <span class="devsite-nav-text" tooltip> App Indexing </span> </a> </li> </ul> </div> </div> </nav> </devsite-book-nav> <section id="gc-wrapper"> <main role="main" class="devsite-main-content" has-book-nav has-toc> <devsite-toc class="devsite-nav"></devsite-toc> <devsite-content> <article class="devsite-article"><style> /* Styles inlined from /styles/docs.css */ .center { text-align: center } /* Used in AdMob code examples */ .oldcode { opacity: .40; /* IE 8 */ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)"; filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=40); /* IE <= 7 */ filter:alpha(opacity=40); } .newcode { font-weight: bold; } /* Device Screenshots */ .deviceshot { max-width: 700px; max-height: 400px; } /* Start Changelog styles */ .badge { position: relative; top: -3px; border-radius: 16px; display: inline-block; width: 90px; height: 32px; line-height: 32px; margin-right: 10px; text-transform: uppercase; font-size: 13px; font-weight: 700; text-align: center; } /* Colours for each type of changelog entry. */ /* TODO: Change the colours to match the site colour scheme */ .badge-changed { background-color: #F4B400; color: #fff; } .badge-fixed { background-color: #4285F4; color: #fff; } .badge-important { background-color: #DB4437; color: #fff; } .badge-feature { background-color: #0F9D58; color: #fff; } .badge-deprecated { background-color: #DB4437; color: #fff; } .badge-issue { background-color: #DB4437; color: #fff; } .changelog > ul { padding-left: 0; } .changelog > ul > li { list-style-type: none; margin-bottom: 22px; } .firebase-support-release-page .changelog > ul { list-style-type: none; padding-left: 110px; } .firebase-release-roundup .changelog > ul { list-style-type: disc outside; padding-left: 40px; } .firebase-release-roundup .changelog > ul > li { list-style-type: disc outside; margin-bottom: 12px; } .release-changed::before, .release-feature::before, .release-fixed::before, .release-issue::before, .release-deprecated::before, .release-removed::before, .release-unchanged::before, .release-rules::before, .release-android::before, .release-android-bom::before, .release-ios::before, .release-admin::before, .release-cpp::before, .release-unity::before, .release-functions::before, .release-javascript::before { display: block; float: left; color: white; width: 100px; height: 32px; margin-left: -110px; margin-right: 10px; margin-top: -5px; padding-top: 4px; text-transform: uppercase; font-size: 13px; font-weight: 700; text-align: center; border-radius: 16px; } .release-changed::before { content: "changed"; background-color: #F4B400; } .release-feature::before { content: "feature"; background-color: #0F9D58; } .release-fixed::before { content: "fixed"; background-color: #4285F4; } .release-issue::before { content: "issue"; background-color: #DB4437; } .release-deprecated::before { content: "deprecated"; background-color: #E65100; } .release-removed::before { content: "removed"; background-color: #546E7A; } .release-unchanged::before { content: "no change"; background-color: #CCCCCC; } .release-android::before { content: "android"; background-color: #A4C639; } .release-android-bom::before { content: "android bom"; background-color: #A4C639; } .release-ios::before { text-transform: none; content: "iOS"; background-color: #007aff; } .release-admin::before { content: "admin"; background-color: #039BE5; } .release-cpp::before { content: "c++"; background-color: #FF8A65; } .release-unity::before { content: "unity"; background-color: #00cccc; } .release-functions::before { content: "functions"; background-color: #2C384A; } .release-javascript::before { content: "javascript"; background-color: #7e57c2; } .release-rules::before { content: "rules"; background-color: #1B3A57; } /* End Changelog styles */ /* Docs Overview page styles */ .docs-android, .docs-ios, .docs-web, .docs-cpp, .docs-unity { height: 64px; width: 64px; margin: 10px 16px 0 -16px; } .firebase-docs-overview .devsite-landing-row h2 { margin: 80px 0 -40px; } .devsite-landing-row-3-up .docs-landing-row-item { width: calc((100% - 80px)/2); display: inline-block; } .docs-landing-icon { font-size: 48px; height: 48px; margin: 11px; width: 48px; } .firebase-reference-list { display: -ms-flex; display: flex; -ms-flex-wrap: wrap; flex-wrap: wrap; list-style: none; margin: 0 0 40px; padding: 0; } .firebase-reference-list-item { -ms-flex: 0 0 50%; flex: 0 0 50%; margin: 40px 0 0; padding: 0; } .firebase-reference-list-item > a { -ms-flex-align: center; align-items: center; display: -ms-flex; display: flex; } .firebase-reference-list-item > a:not(:hover) h3 { color: #424242; } .firebase-reference-list-item > a:not(:hover) li, .firebase-reference-list-item > a:not(:hover) p { color: #757575; } .firebase-reference-list-item .docs-landing-icon { -ms-flex-align: center; align-items: center; background-color: #f5f5f5; border-radius: 50%; -ms-flex: 0 0 88px; flex: 0 0 88px; height: 88px; -ms-justify-content: center; justify-content: center; margin: 0 16px 0 0; padding: 20px; } .firebase-reference-list-item h3 { -ms-flex: 0 0 auto; flex: 0 0 auto; font-size: 18px; line-height: 28px; margin: 0; } .firebase-reference-list-item ul { list-style: none; padding: 0; } .docs-android, .docs-ios, .docs-web, .docs-cpp, .docs-unity { height: 88px; width: auto; } .firebase-reference-list-item.docs-android .docs-landing-icon { color: #00bfa5; } .firebase-reference-list-item.docs-cpp .docs-landing-icon { color: #fd8c09; } .firebase-reference-list-item.docs-ios .docs-landing-icon { color: #16aaca; } .firebase-reference-list-item.docs-unity .docs-landing-icon { color: #000000; } .firebase-reference-list-item.docs-web .docs-landing-icon { color: #c52062; } .firebase-reference-list-item.docs-http .docs-landing-icon { color: #3F51B5; } @media (max-width: 1000px) { .firebase-reference-list { -ms-flex-direction: column; flex-direction: column; } } /* end Docs Overview page styles */ /* Full-page platform selector for Crashlytics docs */ /* Note: h3 in selector content must include hide-from-toc */ .full-page-selector, .full-page-selector-content { border: none; font-size: inherit; } .full-page-selector > .kd-buttonbar { margin: 32px 0px; } .full-page-selector > section { display: none; } .full-page-selector-content > .selected { padding: 0; font-size: inherit; } .full-page-selector-content > .kd-buttonbar { display: none; } .select-page { display: none; } .select-page + .ds-selector-tabs, .after-selection ~ .ds-selector-tabs { border: none; font-size: inherit; } .select-page + .ds-selector-tabs > .kd-buttonbar { margin: 32px 0px; } .select-page + .ds-selector-tabs > section { display: none; } .after-selection ~ .ds-selector-tabs > .selected { padding: 0; font-size: inherit; } .after-selection ~ .ds-selector-tabs > section p { line-height: 24px; } .after-selection ~ .ds-selector-tabs > .kd-buttonbar { display: none; } /* End full-page platform selector */ /* Custom beta and alpha indicators (v1 format, followed by v2 format) */ .devsite-nav-alpha .devsite-nav-icon::before, .devsite-nav-icon[data-icon="alpha"]::before { content: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHZpZXdCb3g9IjAgMCAxOCAxOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTMuMjA2IDE1YTU0LjIxNCA1NC4yMTQgMCAwIDEtLjkyLTIuNTc4bC0uMTQtLjQxNGE4MS43NiA4MS43NiAwIDAgMC0uMTM2LS40MDJDMTAuODUgMTMuNjcyIDkuNTYyIDE0LjUgNy41IDE0LjUgNC44MSAxNC41IDMgMTIuNjE2IDMgOXMxLjgxLTUuNSA0LjUtNS41YzIuMDYyIDAgMy4zNS44MjggNC41MSAyLjg5NGwuMTM3LS40MDIuMTM5LS40MTRjLjM4LTEuMTI3LjY1My0xLjkwMi45Mi0yLjU3OGgyLjE2NmMtLjM2NC44My0uNjcyIDEuNjgtMS4xOSAzLjIxN2wtLjE0LjQxM0E1Ny45OSA1Ny45OSAwIDAgMSAxMy4xOTQgOWMuMjc1LjcxLjU1NCAxLjQ5OC44NDggMi4zN2wuMTQuNDEzYy41MTggMS41MzguODI2IDIuMzg3IDEuMTkgMy4yMTdoLTIuMTY2ek03LjUgNS41QzUuOTMyIDUuNSA1IDYuNDcgNSA5YzAgMi41My45MzIgMy41IDIuNSAzLjUgMS40OTcgMCAyLjQ0NC0uOTE3IDMuNTM1LTMuNUM5Ljk0NCA2LjQxNyA4Ljk5NyA1LjUgNy41IDUuNXoiIGZpbGw9InJnYmEoMCwwLDAsLjM4KSIgZmlsbC1ydWxlPSJub256ZXJvIi8+PC9zdmc+'); } .devsite-nav-beta .devsite-nav-icon::before, .devsite-nav-icon[data-icon="beta"]::before { content: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHZpZXdCb3g9IjAgMCAxOCAxOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTIuMjM2IDcuNjgzQTQgNCAwIDAgMSAxMCAxNUg3djJINVY0YTIgMiAwIDAgMSAyLTJoMi41YTMuNSAzLjUgMCAwIDEgMi43MzYgNS42ODN6TTcgMTNoM2EyIDIgMCAxIDAgMC00SDd2NHptMC02aDIuNWExLjUgMS41IDAgMCAwIDAtM0g3djN6IiBmaWxsPSJyZ2JhKDAsMCwwLC4zOCkiIGZpbGwtcnVsZT0ibm9uemVybyIvPjwvc3ZnPg=='); } .firebase-platform-label { font: 500 12px/24px Roboto,sans-serif; } /* Full-page platform selector dropdown */ /* Note: use menu variables in _elements.html file */ .full-page-selector-dropdown { border: none; position: relative; float: left; display: inline-block; } .full-page-selector-dropdown > .ds-selector-tabs { display: none; position: absolute; min-width: 160px; z-index: 1; } .full-page-selector-dropdown:hover .ds-selector-tabs { display: block; margin: 0; } .full-page-selector-dropdown:hover .kd-tabbutton { display: block; border: none; height: inherit; text-align: left; } .full-page-selector-dropdown:hover .kd-buttonbar { border: none; height: inherit; } .full-page-selector-dropdown h3:hover { color: white; background-color: #039be5; } .full-page-selector-dropdown:hover .devsite-overflow-menu-button { display: none; } </style> <div class="devsite-banner devsite-banner-announcement"> <div class="devsite-banner-message"> <div class="devsite-banner-message-text"> <style> .devsite-banner-announcement { background: #e1f3fc; color: #0288d1; font-weight: 500; } .devsite-banner-announcement a { color: #0288d1; font-weight: 700; } .devsite-banner-announcement a:link, .devsite-banner-announcement a:visited { background: 0; } .devsite-banner-announcement a:hover, .devsite-banner-announcement a:focus { text-decoration: none; } .devsite-banner-announcement .devsite-banner-message-text { margin: 0 auto; } </style> Save the date - Google I/O returns May 18-20. Register to get the most out of the digital experience: Build your schedule, reserve space, participate in Q&As;, earn Google Developer profile badges, and more. <a href="https://web.archive.org/web/20210428194054/https://events.google.com/io/?utm_source=firebase&amp;utm_medium=embedded_marketing&amp;utm_campaign=svd-2021-fb" target="_blank" rel="noopener noreferrer">Register now</a> </div> </div> </div> <div class="devsite-article-meta" role="navigation"> <ul class="devsite-breadcrumb-list" aria-label="Breadcrumb"> <li class="devsite-breadcrumb-item "> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="1" track-type="globalNav" track-name="breadcrumb" track-metadata-position="1" track-metadata-eventdetail="Firebase"> Firebase </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/docs" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="2" track-type="globalNav" track-name="breadcrumb" track-metadata-position="2" track-metadata-eventdetail=""> Docs </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="https://web.archive.org/web/20210428194054/https://firebase.google.com/docs/guides" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="3" track-type="globalNav" track-name="breadcrumb" track-metadata-position="3" track-metadata-eventdetail=""> Fundamentals </a> </li> </ul> <devsite-thumb-rating position="header"> <template class="thumb-down-categories"> [{ "type": "thumb-down", "id": "missingTheInformationINeed", "label":"Missing the information I need" },{ "type": "thumb-down", "id": "tooComplicatedTooManySteps", "label":"Too complicated / too many steps" },{ "type": "thumb-down", "id": "outOfDate", "label":"Out of date" },{ "type": "thumb-down", "id": "samplesCodeIssue", "label":"Samples / code issue" },{ "type": "thumb-down", "id": "otherDown", "label":"Other" }] </template> <template class="thumb-up-categories"> [{ "type": "thumb-up", "id": "easyToUnderstand", "label":"Easy to understand" },{ "type": "thumb-up", "id": "solvedMyProblem", "label":"Solved my problem" },{ "type": "thumb-up", "id": "otherUp", "label":"Other" }] </template> <template class="thumb-rating-feedback"> <devsite-feedback position="thumb-rating" project-name="Firebase" product-id="719752" bucket="" context="" version="t-devsite-webserver-20210422-r01-rc01.434751840001528656" data-label="Send Feedback Button" track-type="feedback" track-name="sendFeedbackLink" track-metadata-position="thumb-rating" project-feedback-url="https://firebase.google.com/support/contact/bugs-features/" project-icon="https://firebase.google.com/_static/firebase/images/logo.png" project-support-url="https://firebase.google.com/support/" feedback-type="thumb-rating"> <button> Need to tell us more? </button> </devsite-feedback> </template> </devsite-thumb-rating> </div> <devsite-feedback position="header" project-name="Firebase" product-id="719752" bucket="" context="" version="t-devsite-webserver-20210422-r01-rc01.434751840001528656" data-label="Send Feedback Button" track-type="feedback" track-name="sendFeedbackLink" track-metadata-position="header" project-feedback-url="https://firebase.google.com/support/contact/bugs-features/" project-icon="https://firebase.google.com/_static/firebase/images/logo.png" project-support-url="https://firebase.google.com/support/" feedback-type="thumb-rating"> <button> Send feedback </button> </devsite-feedback> <h1 class="devsite-page-title">Add the Firebase Admin SDK to your server</h1> <devsite-toc class="devsite-nav" devsite-toc-embedded> </devsite-toc> <div class="devsite-article-body clearfix "> <p>The Admin SDK is a set of server libraries that lets you interact with Firebase from privileged environments to perform actions like:</p> <ul> <li>Read and write Realtime Database data with full admin privileges.</li> <li>Programmatically send Firebase Cloud Messaging messages using a simple, alternative approach to the Firebase Cloud Messaging server protocols.</li> <li>Generate and verify Firebase auth tokens.</li> <li>Access Google Cloud resources like Cloud Storage buckets and Cloud Firestore databases associated with your Firebase projects.</li> <li>Create your own simplified admin console to do things like look up user data or change a user&#39;s email address for authentication.</li> </ul> <p>If you are interested in using the Node.js SDK as a client for end-user access (for example, in a Node.js desktop or IoT application), as opposed to admin access from a privileged environment (like a server), you should instead follow the <a href="/web/20210428194054/https://firebase.google.com/docs/web/setup">instructions for setting up the client JavaScript SDK</a>.</p> <p>Here is a feature matrix showing what Firebase features are supported in each language:</p> <table> <tr> <th>Feature</th> <th class="center">Node.js</th> <th class="center">Java</th> <th class="center">Python</th> <th class="center">Go</th> <th class="center">C#</th> </tr> <tr> <td> <a href="/web/20210428194054/https://firebase.google.com/docs/auth/admin/create-custom-tokens">Custom Token Minting</a> </td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> </tr> <tr> <td> <a href="/web/20210428194054/https://firebase.google.com/docs/auth/admin/verify-id-tokens">ID Token Verification</a> </td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> </tr> <tr> <td> <a href="/web/20210428194054/https://firebase.google.com/docs/auth/admin/manage-users">User Management</a> </td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> </tr> <tr> <td> <a href="/web/20210428194054/https://firebase.google.com/docs/auth/admin/custom-claims">Control Access With Custom Claims</a> </td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> </tr> <tr> <td> <a href="/web/20210428194054/https://firebase.google.com/docs/auth/admin/manage-sessions">Refresh Token Revocation</a> </td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> </tr> <tr> <td> <a href="/web/20210428194054/https://firebase.google.com/docs/auth/admin/import-users">Import Users</a> </td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> </tr> <tr> <td> <a href="/web/20210428194054/https://firebase.google.com/docs/auth/admin/manage-cookies">Session Cookie Management</a> </td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> </tr> <tr> <td> <a href="/web/20210428194054/https://firebase.google.com/docs/auth/admin/email-action-links">Generating Email Action Links</a> </td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> </tr> <tr> <td> <a href="//web.archive.org/web/20210428194054/https://cloud.google.com/identity-cp/docs/managing-providers-programmatically"> Managing SAML/OIDC provider configurations</a> </td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> </tr> <tr> <td> <a href="//web.archive.org/web/20210428194054/https://cloud.google.com/identity-platform/docs/multi-tenancy"> Multi-tenancy support</a> </td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> </tr> <tr> <td> <a href="/web/20210428194054/https://firebase.google.com/docs/database/admin/start">Realtime Database</a> </td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> <td class="center compare-yes">*</td> <td></td> </tr> <tr> <td> <a href="/web/20210428194054/https://firebase.google.com/docs/cloud-messaging/server#firebase-admin-sdk-for-fcm">Firebase Cloud Messaging</a> </td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> </tr> <tr> <td> <a href="/web/20210428194054/https://firebase.google.com/docs/cloud-messaging/send-message#send-messages-to-multiple-devices">FCM Multicast</a> </td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> </tr> <tr> <td> <a href="/web/20210428194054/https://firebase.google.com/docs/cloud-messaging/manage-topics">Manage FCM Topic Subscriptions</a> </td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> </tr> <tr> <td> <a href="/web/20210428194054/https://firebase.google.com/docs/storage/admin/start">Cloud Storage</a> </td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> <td></td> </tr> <tr> <td> <a href="/web/20210428194054/https://firebase.google.com/docs/firestore">Cloud Firestore</a> </td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> <td></td> </tr> <tr> <td> <a>Project Management</a> </td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> <td></td> <td></td> </tr> <tr> <td> <a href="/web/20210428194054/https://firebase.google.com/docs/rules/manage-deploy">Security Rules</a> </td> <td class="center compare-yes"></td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <td> <a href="/web/20210428194054/https://firebase.google.com/docs/ml/manage-hosted-models">ML Model Management</a> </td> <td class="center compare-yes"></td> <td></td> <td class="center compare-yes"></td> <td></td> <td></td> </tr> <tr> <td> <a href="/web/20210428194054/https://firebase.google.com/docs/remote-config/automate-rc">Firebase Remote Config</a> </td> <td class="center compare-yes"></td> <td class="center compare-yes"></td> <td></td> <td></td> <td></td> </tr> </table> <aside class="note"><strong>Note:</strong><span> The Realtime Database API in the Go Admin SDK currently does not support realtime event listeners. This means there is no provision for adding event listeners to a database reference in order to automatically receive realtime update notifications. Instead, in Go, updates should be proactively fetched by explicitly invoking read operations.</span></aside> <p>To learn more about Admin SDK integration for these uses, see the corresponding <a href="/web/20210428194054/https://firebase.google.com/docs/database/admin/start">Realtime Database</a>, <a href="/web/20210428194054/https://firebase.google.com/docs/cloud-messaging/server#firebase-admin-sdk-for-fcm">FCM</a>, <a href="/web/20210428194054/https://firebase.google.com/docs/auth/admin">Authentication</a>, <a href="/web/20210428194054/https://firebase.google.com/docs/remote-config/automate-rc#modify_remote_config_using_the_firebase_admin_sdk">Remote Config</a>, and <a href="/web/20210428194054/https://firebase.google.com/docs/storage/admin/start">Cloud Storage</a> documentation. The rest of this page focuses on basic setup for the Admin SDK.</p> <h2 id="prerequisites" data-text="Prerequisites">Prerequisites</h2> <ul> <li><p>Make sure that you have a server app.</p></li> <li><p>Make sure that your server runs the following depending on which Admin SDK that you use:</p> <ul> <li>Admin Node.js SDK — Node.js 10.10.0+</li> <li>Admin Java SDK — Java 7+ (recommend Java 8+)<br> Java 7 support is deprecated.</li> <li>Admin Python SDK — Python 3.6+</li> <li>Admin Go SDK — Go 1.11+</li> <li>Admin .NET SDK — .NET Framework 4.5+ or .Net Core 1.5+</li> </ul></li> </ul> <h2 id="set-up-project-and-service-account" data-text="Set up a Firebase project and service account">Set up a Firebase project and service account</h2> <p>To use the Firebase Admin SDK, you&#39;ll need the following:</p> <ul> <li>A Firebase project</li> <li>A service account to communicate with Firebase</li> <li>A configuration file with your service account&#39;s credentials</li> </ul> <p>If you don&#39;t already have a Firebase project, you need to create one in the <a href="//web.archive.org/web/20210428194054/https://console.firebase.google.com/" class="link external gc-analytics-event" data-category="console" data-action="linkClick">Firebase console</a>. Visit <a href="/web/20210428194054/https://firebase.google.com/docs/projects/learn-more">Understand Firebase Projects</a> to learn more about Firebase projects.</p> <section class="expandable"> <p class="showalways"><strong>Create a Firebase project</strong></p> <ol> <li> <p>In the <a href="//web.archive.org/web/20210428194054/https://console.firebase.google.com/" class="link external gc-analytics-event" data-category="console" data-action="linkClick">Firebase console</a>, click <strong>Add project</strong>, then select or enter a <strong>Project name</strong>.</p> <p>If you have an existing Google Cloud project, you can select the project from the dropdown menu to add Firebase resources to that project.</p> </li> <li> <p><em>(Optional)</em> If you are creating a new project, you can edit the <strong>Project ID</strong>.</p> <p>Firebase automatically assigns a unique ID to your Firebase project. Visit <a href="/web/20210428194054/https://firebase.google.com/docs/projects/learn-more#project-id">Understand Firebase Projects</a> to learn about how Firebase uses the project ID.</p> <aside class="caution"><strong>After Firebase provisions resources for your Firebase project, you cannot change your project ID.</strong> <br>To use a specific identifier, you must edit your project ID during this setup step. </aside> </li> <li> <p>Click <strong>Continue</strong>.</p> </li> <li> <p><em>(Optional)</em> Set up Google Analytics for your project, which enables you to have an optimal experience using any of the following Firebase products:</p> <table class="columns"> <tr> <td> <ul> <li><a href="/web/20210428194054/https://firebase.google.com/docs/crashlytics">Firebase Crashlytics</a></li> <li><a href="/web/20210428194054/https://firebase.google.com/docs/predictions">Firebase Predictions</a></li> </ul> </td> <td> <ul> <li><a href="/web/20210428194054/https://firebase.google.com/docs/cloud-messaging">Firebase Cloud Messaging</a></li> <li><a href="/web/20210428194054/https://firebase.google.com/docs/in-app-messaging">Firebase In-App Messaging</a></li> </ul> </td> <td> <ul> <li><a href="/web/20210428194054/https://firebase.google.com/docs/remote-config">Firebase Remote Config</a></li> <li><a href="/web/20210428194054/https://firebase.google.com/docs/ab-testing">Firebase A/B Testing</a></li> </ul> </td> </tr> </table> <p>When prompted, select to use an existing <a href="//web.archive.org/web/20210428194054/https://support.google.com/analytics/answer/1009618?ref_topic=3544906&amp;authuser=0">Google Analytics account</a> or to create a new account.<br> If you choose to create a new account, select your <a href="/web/20210428194054/https://firebase.google.com/docs/projects/locations">Analytics reporting location</a>, then accept the data sharing settings and Google Analytics terms for your project. </p> <aside class="note">You can always set up Google Analytics later in the <a href="//web.archive.org/web/20210428194054/https://console.firebase.google.com/project/_/settings/integrations"><em>Integrations</em></a> tab of your <span class="material-icons" aria-hidden="true" translate="no">settings</span> <em>Project settings</em>. </aside> </li> <li> <p>Click <strong>Create project</strong> (or <strong>Add Firebase</strong>, if you're using an existing Google Cloud project).</p> </li> </ol> <p>Firebase automatically provisions resources for your Firebase project. When the process completes, you'll be taken to the overview page for your Firebase project in the Firebase console.</p> </section> <h2 id="add-sdk" data-text="Add the SDK">Add the SDK</h2> <p>If you are setting up a new project, you need to install the SDK for the language of your choice.</p> <div class="ds-selector-tabs" data-ds-scope="code-sample"> <section><h3 id="node.js" data-text="Node.js">Node.js</h3><p>The Firebase Admin Node.js SDK is available on npm. If you don&#39;t already have a <code translate="no" dir="ltr">package.json</code> file, create one via <code translate="no" dir="ltr">npm init</code>. Next, install the <code translate="no" dir="ltr">firebase-admin</code> npm package and save it to your <code translate="no" dir="ltr">package.json</code>:</p> <pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">$ npm install firebase-admin --save </code></pre> <p>To use the module in your application, <code translate="no" dir="ltr">require</code> it from any JavaScript file:</p> <pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">var admin = require(&#39;firebase-admin&#39;); </code></pre> <p>If you are using ES2015, you can <code translate="no" dir="ltr">import</code> the module instead:</p> <pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">import * as admin from &#39;firebase-admin&#39;; </code></pre></section> <section><h3 id="java" data-text="Java">Java</h3><p>The Firebase Admin Java SDK is published to the Maven central repository. To install the library, declare it as a dependency in your <code translate="no" dir="ltr">build.gradle</code> file:</p> <pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">dependencies { implementation &#39;com.google.firebase:firebase-admin:7.2.0&#39; } </code></pre> <p>If you use Maven to build your application, you can add the following dependency to your <code translate="no" dir="ltr">pom.xml</code>:</p> <pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">&lt;dependency&gt; &lt;groupId&gt;com.google.firebase&lt;/groupId&gt; &lt;artifactId&gt;firebase-admin&lt;/artifactId&gt; &lt;version&gt;7.2.0&lt;/version&gt; &lt;/dependency&gt; </code></pre></section> <section><h3 id="python" data-text="Python">Python</h3><p>The Firebase Admin Python SDK is available via <a href="//web.archive.org/web/20210428194054/https://pypi.python.org/pypi/pip">pip</a>. You can install the library for all users via <code translate="no" dir="ltr">sudo</code>:</p> <pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">$ sudo pip install firebase-admin </code></pre> <p>Or, you can install the library for just the current user by passing the <code translate="no" dir="ltr">--user</code> flag:</p> <pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">$ pip install --user firebase-admin </code></pre></section> <section><h3 id="go" data-text="Go">Go</h3><p>The Go Admin SDK can be installed using the <code translate="no" dir="ltr">go get</code> utility:</p> <pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr"># Install as a module dependency $ go get firebase.google.com/go/v4 # Install to $GOPATH $ go get firebase.google.com/go </code></pre></section> <section><h3 id="c" data-text="C#">C#</h3><p>The .NET Admin SDK can be installed using the .NET package manager:</p> <pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">$ Install-Package FirebaseAdmin -Version 2.1.0 </code></pre> <p>Alternatively, install it using the <code translate="no" dir="ltr">dotnet</code> command-line utility:</p> <pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">$ dotnet add package FirebaseAdmin --version 2.1.0 </code></pre> <p>Or, you can install it by adding the following package reference entry to your <code translate="no" dir="ltr">.csproj</code> file:</p> <pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">&lt;ItemGroup&gt; &lt;PackageReference Include=&#34;FirebaseAdmin&#34; Version=&#34;2.1.0&#34; /&gt; &lt;/ItemGroup&gt; </code></pre></section> </div> <h2 id="initialize-sdk" data-text="Initialize the SDK">Initialize the SDK</h2> <p>Once you have created a Firebase project, you can initialize the SDK with an authorization strategy that combines your service account file together with <a href="//web.archive.org/web/20210428194054/https://cloud.google.com/docs/authentication/production#providing_credentials_to_your_application">Google Application Default Credentials</a>.</p> <p>Firebase projects support Google <a href="//web.archive.org/web/20210428194054/https://console.firebase.google.com/project/_/settings/serviceaccounts/adminsdk">service accounts</a>, which you can use to call Firebase server APIs from your app server or trusted environment. If you&#39;re developing code locally or deploying your application on-premises, you can use credentials obtained via this service account to authorize server requests.</p> <p>To authenticate a service account and authorize it to access Firebase services, you must generate a private key file in JSON format.</p> <p><strong>To generate a private key file for your service account:</strong></p> <ol> <li><p>In the Firebase console, open <strong>Settings &gt; <a href="//web.archive.org/web/20210428194054/https://console.firebase.google.com/project/_/settings/serviceaccounts/adminsdk">Service Accounts</a></strong>.</p></li> <li><p>Click <strong>Generate New Private Key</strong>, then confirm by clicking <strong>Generate Key</strong>.</p></li> <li><p>Securely store the JSON file containing the key.</p></li> </ol> <p>When authorizing via a service account, you have two choices for providing the credentials to your application. You can either set the <var translate="no">GOOGLE_APPLICATION_CREDENTIALS</var> environment variable, or you can explicitly pass the path to the service account key in code. The first option is more secure and is strongly recommended.</p> <p><strong>To set the environment variable:</strong></p> <p>Set the environment variable <var translate="no">GOOGLE_APPLICATION_CREDENTIALS</var> to the file path of the JSON file that contains your service account key. This variable only applies to your current shell session, so if you open a new session, set the variable again.</p> <div class="ds-selector-tabs" data-ds-scope="code-sample"> <section><h3 id="linux-or-macos" data-text="Linux or macOS">Linux or macOS</h3><pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">export GOOGLE_APPLICATION_CREDENTIALS=&#34;/home/user/Downloads/service-account-file.json&#34; </code></pre></section> <section><h3 id="windows" data-text="Windows">Windows</h3><p>With PowerShell:</p> <pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">$env:GOOGLE_APPLICATION_CREDENTIALS=&#34;C:\Users\username\Downloads\service-account-file.json&#34; </code></pre></section> </div> <p>After you&#39;ve completed the above steps, Application Default Credentials (ADC) is able to implicitly determine your credentials, allowing you to use service account credentials when testing or running in non-Google environments.</p> <p>Initialize the SDK as shown:</p> <div class="ds-selector-tabs" data-ds-scope="code-sample"> <section><h3 id="node.js_1" data-text="Node.js">Node.js</h3><pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">admin.initializeApp({ credential: admin.credential.applicationDefault(), databaseURL: &#39;https://&lt;DATABASE_NAME&gt;.firebaseio.com&#39; }); </code></pre></section> <section><h3 id="java_1" data-text="Java">Java</h3><pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">FirebaseOptions options = FirebaseOptions.builder() .setCredentials(GoogleCredentials.getApplicationDefault()) .setDatabaseUrl(&quot;https://&lt;DATABASE_NAME&gt;.firebaseio.com/&quot;) .build(); FirebaseApp.initializeApp(options); </code></pre></section> <section><h3 id="python_1" data-text="Python">Python</h3><pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">default_app = firebase_admin.initialize_app() </code></pre></section> <section><h3 id="go_1" data-text="Go">Go</h3><pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">app, err := firebase.NewApp(context.Background(), nil) if err != nil { log.Fatalf(&quot;error initializing app: %v\n&quot;, err) }<div class="devsite-github-link nocode no-select"><a target="_top" href="https://web.archive.org/web/20210428194054/https://github.com/firebase/firebase-admin-go/blob/4121c50b610f0ce408a2978cf14b306becf276d3/snippets/init.go#L60-L63" class="gc-analytics-event" data-category="github_link" data-label="firebase/firebase-admin-go/snippets/init.go#initialize_app_default_golang" data-code-snippet="true" data-github-path="firebase/firebase-admin-go/snippets/init.go" data-region-tag="initialize_app_default_golang">init.go</a></div> </code></pre></section> <section><h3 id="c_1" data-text="C#">C#</h3><pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">FirebaseApp.Create(new AppOptions() { Credential = GoogleCredential.GetApplicationDefault(), }); </code></pre></section> </div><aside class="note"><strong>Note:</strong><span> Initialization options such as <code translate="no" dir="ltr">databaseURL</code> shown in the code examples on this page are not strictly required to initialize the SDK. Depending on your deployment environment and the target use case, you can choose to specify only the options you need.</span></aside> <h3 id="use-oauth-2-0-refresh-token" data-text="Using an OAuth 2.0 refresh token">Using an OAuth 2.0 refresh token</h3> <p>The Admin SDK also provides a credential which allows you to authenticate with a <a href="//web.archive.org/web/20210428194054/https://developers.google.com/identity/protocols/OAuth2">Google OAuth2</a> refresh token:</p> <div class="ds-selector-tabs" data-ds-scope="code-sample"> <section><h3 id="node.js_2" data-text="Node.js">Node.js</h3><pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">var refreshToken; // Get refresh token from OAuth2 flow admin.initializeApp({ credential: admin.credential.refreshToken(refreshToken), databaseURL: &#39;https://&lt;DATABASE_NAME&gt;.firebaseio.com&#39; }); </code></pre></section> <section><h3 id="java_2" data-text="Java">Java</h3><pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">FileInputStream refreshToken = new FileInputStream(&quot;path/to/refreshToken.json&quot;); FirebaseOptions options = FirebaseOptions.builder() .setCredentials(GoogleCredentials.fromStream(refreshToken)) .setDatabaseUrl(&quot;https://&lt;DATABASE_NAME&gt;.firebaseio.com/&quot;) .build(); FirebaseApp.initializeApp(options); </code></pre></section> <section><h3 id="python_2" data-text="Python">Python</h3><pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">cred = credentials.RefreshToken(&#39;path/to/refreshToken.json&#39;) default_app = firebase_admin.initialize_app(cred) </code></pre></section> <section><h3 id="go_2" data-text="Go">Go</h3><pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">opt := option.WithCredentialsFile(&quot;path/to/refreshToken.json&quot;) config := &amp;firebase.Config{ProjectID: &quot;my-project-id&quot;} app, err := firebase.NewApp(context.Background(), config, opt) if err != nil { log.Fatalf(&quot;error initializing app: %v\n&quot;, err) }<div class="devsite-github-link nocode no-select"><a target="_top" href="https://web.archive.org/web/20210428194054/https://github.com/firebase/firebase-admin-go/blob/4121c50b610f0ce408a2978cf14b306becf276d3/snippets/init.go#L47-L52" class="gc-analytics-event" data-category="github_link" data-label="firebase/firebase-admin-go/snippets/init.go#initialize_app_refresh_token_golang" data-code-snippet="true" data-github-path="firebase/firebase-admin-go/snippets/init.go" data-region-tag="initialize_app_refresh_token_golang">init.go</a></div> </code></pre></section> <section><h3 id="c_2" data-text="C#">C#</h3><pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">FirebaseApp.Create(new AppOptions() { Credential = GoogleCredential.FromFile(&quot;path/to/refreshToken.json&quot;), }); </code></pre></section> </div><aside class="note"><strong>Note:</strong><span> OAuth 2.0 refresh tokens are not supported for connecting to Cloud Firestore.</span></aside> <h3 id="initialize-without-parameters" data-text="Initialize without parameters">Initialize without parameters</h3> <p>The SDK can also be initialized with no parameters. In this case, the SDK uses <a href="//web.archive.org/web/20210428194054/https://developers.google.com/identity/protocols/application-default-credentials">Google Application Default Credentials</a>. Because default credentials lookup is fully automated in Google environments, with no need to supply environment variables or other configuration, this way of intializing the SDK is strongly recommeneded for applications running on Compute Engine, Kubernetes Engine, App Engine, and Cloud Functions.</p> <p>To optionally specify initialization options for services such as Realtime Database, Cloud Storage, or Cloud Functions, use the <code translate="no" dir="ltr">FIREBASE_CONFIG</code> environment variable. If the content of the <code translate="no" dir="ltr">FIREBASE_CONFIG</code> variable begins with a <code translate="no" dir="ltr">{</code> it will be parsed as a JSON object. Otherwise the SDK assumes that the string is the path of a JSON file containing the options.</p> <aside class="note"><strong>Note:</strong><span> The <code translate="no" dir="ltr">FIREBASE_CONFIG</code> environment variable is included automatically in Cloud Functions for Firebase functions that were deployed via the <a href="/web/20210428194054/https://firebase.google.com/docs/cli#deployment">Firebase CLI</a>.</span></aside><div class="ds-selector-tabs" data-ds-scope="code-sample"> <section><h3 id="node.js_3" data-text="Node.js">Node.js</h3><pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">// Initialize the default app var admin = require(&#39;firebase-admin&#39;); var app = admin.initializeApp(); </code></pre></section> <section><h3 id="java_3" data-text="Java">Java</h3><pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">FirebaseApp.initializeApp(); </code></pre></section> <section><h3 id="python_3" data-text="Python">Python</h3><pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">default_app = firebase_admin.initialize_app() </code></pre></section> <section><h3 id="go_3" data-text="Go">Go</h3><pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">app, err := firebase.NewApp(context.Background(), nil) if err != nil { log.Fatalf(&quot;error initializing app: %v\n&quot;, err) }<div class="devsite-github-link nocode no-select"><a target="_top" href="https://web.archive.org/web/20210428194054/https://github.com/firebase/firebase-admin-go/blob/4121c50b610f0ce408a2978cf14b306becf276d3/snippets/init.go#L60-L63" class="gc-analytics-event" data-category="github_link" data-label="firebase/firebase-admin-go/snippets/init.go#initialize_app_default_golang" data-code-snippet="true" data-github-path="firebase/firebase-admin-go/snippets/init.go" data-region-tag="initialize_app_default_golang">init.go</a></div> </code></pre></section> <section><h3 id="c_3" data-text="C#">C#</h3><pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">FirebaseApp.Create(); </code></pre></section> </div> <p>Once it is initialized, you can use the Admin SDK to accomplish the following types of tasks:</p> <ul> <li><a href="/web/20210428194054/https://firebase.google.com/docs/auth/admin">Implement custom authentication</a></li> <li><a href="/web/20210428194054/https://firebase.google.com/docs/auth/admin/manage-users">Manage your Firebase Authentication users</a></li> <li><a href="/web/20210428194054/https://firebase.google.com/docs/database/admin/start">Read and write data from the Realtime Database</a></li> <li><a href="/web/20210428194054/https://firebase.google.com/docs/cloud-messaging/admin/send-messages">Send Firebase Cloud Messaging messages</a></li> </ul> <h2 id="initialize-multiple-apps" data-text="Initialize multiple apps">Initialize multiple apps</h2> <p>In most cases, you only have to initialize a single, default app. You can access services off of that app in two equivalent ways:</p> <div class="ds-selector-tabs" data-ds-scope="code-sample"> <section><h3 id="node.js_4" data-text="Node.js">Node.js</h3><pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">// Initialize the default app var defaultApp = admin.initializeApp(defaultAppConfig); console.log(defaultApp.name); // &#39;[DEFAULT]&#39; // Retrieve services via the defaultApp variable... var defaultAuth = defaultApp.auth(); var defaultDatabase = defaultApp.database(); // ... or use the equivalent shorthand notation defaultAuth = admin.auth(); defaultDatabase = admin.database(); </code></pre></section> <section><h3 id="java_4" data-text="Java">Java</h3><pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">// Initialize the default app FirebaseApp defaultApp = FirebaseApp.initializeApp(defaultOptions); System.out.println(defaultApp.getName()); // &quot;[DEFAULT]&quot; // Retrieve services by passing the defaultApp variable... FirebaseAuth defaultAuth = FirebaseAuth.getInstance(defaultApp); FirebaseDatabase defaultDatabase = FirebaseDatabase.getInstance(defaultApp); // ... or use the equivalent shorthand notation defaultAuth = FirebaseAuth.getInstance(); defaultDatabase = FirebaseDatabase.getInstance(); </code></pre></section> <section><h3 id="python_4" data-text="Python">Python</h3><pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr"># Import the Firebase service from firebase_admin import auth # Initialize the default app default_app = firebase_admin.initialize_app(cred) print(default_app.name) # &quot;[DEFAULT]&quot; # Retrieve services via the auth package... # auth.create_custom_token(...) </code></pre></section> <section><h3 id="go_4" data-text="Go">Go</h3><pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">// Initialize default app app, err := firebase.NewApp(context.Background(), nil) if err != nil { log.Fatalf(&quot;error initializing app: %v\n&quot;, err) } // Access auth service from the default app client, err := app.Auth(context.Background()) if err != nil { log.Fatalf(&quot;error getting Auth client: %v\n&quot;, err) }<div class="devsite-github-link nocode no-select"><a target="_top" href="https://web.archive.org/web/20210428194054/https://github.com/firebase/firebase-admin-go/blob/4121c50b610f0ce408a2978cf14b306becf276d3/snippets/init.go#L84-L94" class="gc-analytics-event" data-category="github_link" data-label="firebase/firebase-admin-go/snippets/init.go#access_services_single_app_golang" data-code-snippet="true" data-github-path="firebase/firebase-admin-go/snippets/init.go" data-region-tag="access_services_single_app_golang">init.go</a></div> </code></pre></section> <section><h3 id="c_4" data-text="C#">C#</h3><pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">// Initialize the default app var defaultApp = FirebaseApp.Create(new AppOptions() { Credential = GoogleCredential.GetApplicationDefault(), }); Console.WriteLine(defaultApp.Name); // &quot;[DEFAULT]&quot; // Retrieve services by passing the defaultApp variable... var defaultAuth = FirebaseAuth.GetAuth(defaultApp); // ... or use the equivalent shorthand notation defaultAuth = FirebaseAuth.DefaultInstance; </code></pre></section> </div> <p>Some use cases require you to create multiple apps at the same time. For example, you might want to read data from the Realtime Database of one Firebase project and mint custom tokens for another project. Or you might want to authenticate two apps with separate credentials. The Firebase SDK allows you create multiple apps at the same time, each with their own configuration information.</p> <div class="ds-selector-tabs" data-ds-scope="code-sample"> <section><h3 id="node.js_5" data-text="Node.js">Node.js</h3><pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">// Initialize the default app admin.initializeApp(defaultAppConfig); // Initialize another app with a different config var otherApp = admin.initializeApp(otherAppConfig, &#39;other&#39;); console.log(admin.app().name); // &#39;[DEFAULT]&#39; console.log(otherApp.name); // &#39;other&#39; // Use the shorthand notation to retrieve the default app&#39;s services var defaultAuth = admin.auth(); var defaultDatabase = admin.database(); // Use the otherApp variable to retrieve the other app&#39;s services var otherAuth = otherApp.auth(); var otherDatabase = otherApp.database(); </code></pre></section> <section><h3 id="java_5" data-text="Java">Java</h3><pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">// Initialize the default app FirebaseApp defaultApp = FirebaseApp.initializeApp(defaultOptions); // Initialize another app with a different config FirebaseApp otherApp = FirebaseApp.initializeApp(otherAppConfig, &quot;other&quot;); System.out.println(defaultApp.getName()); // &quot;[DEFAULT]&quot; System.out.println(otherApp.getName()); // &quot;other&quot; // Use the shorthand notation to retrieve the default app&#39;s services FirebaseAuth defaultAuth = FirebaseAuth.getInstance(); FirebaseDatabase defaultDatabase = FirebaseDatabase.getInstance(); // Use the otherApp variable to retrieve the other app&#39;s services FirebaseAuth otherAuth = FirebaseAuth.getInstance(otherApp); FirebaseDatabase otherDatabase = FirebaseDatabase.getInstance(otherApp); </code></pre></section> <section><h3 id="python_5" data-text="Python">Python</h3><pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr"># Initialize the default app default_app = firebase_admin.initialize_app(cred) # Initialize another app with a different config other_app = firebase_admin.initialize_app(cred, name=&#39;other&#39;) print(default_app.name) # &quot;[DEFAULT]&quot; print(other_app.name) # &quot;other&quot; # Retrieve default services via the auth package... # auth.create_custom_token(...) # Use the `app` argument to retrieve the other app&#39;s services # auth.create_custom_token(..., app=other_app) </code></pre></section> <section><h3 id="go_5" data-text="Go">Go</h3><pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">// Initialize the default app defaultApp, err := firebase.NewApp(context.Background(), nil) if err != nil { log.Fatalf(&quot;error initializing app: %v\n&quot;, err) } // Initialize another app with a different config opt := option.WithCredentialsFile(&quot;service-account-other.json&quot;) otherApp, err := firebase.NewApp(context.Background(), nil, opt) if err != nil { log.Fatalf(&quot;error initializing app: %v\n&quot;, err) } // Access Auth service from default app defaultClient, err := defaultApp.Auth(context.Background()) if err != nil { log.Fatalf(&quot;error getting Auth client: %v\n&quot;, err) } // Access auth service from other app otherClient, err := otherApp.Auth(context.Background()) if err != nil { log.Fatalf(&quot;error getting Auth client: %v\n&quot;, err) }<div class="devsite-github-link nocode no-select"><a target="_top" href="https://web.archive.org/web/20210428194054/https://github.com/firebase/firebase-admin-go/blob/4121c50b610f0ce408a2978cf14b306becf276d3/snippets/init.go#L102-L125" class="gc-analytics-event" data-category="github_link" data-label="firebase/firebase-admin-go/snippets/init.go#access_services_multiple_app_golang" data-code-snippet="true" data-github-path="firebase/firebase-admin-go/snippets/init.go" data-region-tag="access_services_multiple_app_golang">init.go</a></div> </code></pre></section> <section><h3 id="c_5" data-text="C#">C#</h3><pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">// Initialize the default app var defaultApp = FirebaseApp.Create(defaultOptions); // Initialize another app with a different config var otherApp = FirebaseApp.Create(otherAppConfig, &quot;other&quot;); Console.WriteLine(defaultApp.Name); // &quot;[DEFAULT]&quot; Console.WriteLine(otherApp.Name); // &quot;other&quot; // Use the shorthand notation to retrieve the default app&#39;s services var defaultAuth = FirebaseAuth.DefaultInstance; // Use the otherApp variable to retrieve the other app&#39;s services var otherAuth = FirebaseAuth.GetAuth(otherApp); </code></pre></section> </div><aside class="note"><strong>Note:</strong><span> Each app instance has its own configuration options and authentication state.</span></aside> <h2 id="set-scopes-for-realtime-database-auth" data-text="Set scopes for Realtime Database and Authentication">Set scopes for Realtime Database and Authentication</h2> <p>If you&#39;re using a Google Compute Engine VM with Google Application Default Credentials for Realtime Database or Authentication, make sure to also set the right <a href="//web.archive.org/web/20210428194054/https://cloud.google.com/compute/docs/access/create-enable-service-accounts-for-instances#changeserviceaccountandscopes">access scopes</a>. For Realtime Database and Authentication, you need scopes ending in <code translate="no" dir="ltr">userinfo.email</code> and either <code translate="no" dir="ltr">cloud-platform</code> or <code translate="no" dir="ltr">firebase.database</code>. To check the existing access scopes and change them, run the following commands using <a href="//web.archive.org/web/20210428194054/https://cloud.google.com/sdk/gcloud/">gcloud</a>.</p> <div class="ds-selector-tabs" data-ds-scope="code-sample"> <section><h3 id="gcloud" data-text="gcloud">gcloud</h3><pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr"># Check the existing access scopes gcloud compute instances describe [INSTANCE_NAME] --format json # The above command returns the service account information. For example: &#34;serviceAccounts&#34;: [ { &#34;email&#34;: &#34;your.gserviceaccount.com&#34;, &#34;scopes&#34;: [ &#34;https://www.googleapis.com/auth/cloud-platform&#34;, &#34;https://www.googleapis.com/auth/userinfo.email&#34; ] } ], # Stop the VM, then run the following command, using the service account # that gcloud returned when you checked the scopes. gcloud compute instances set-service-account [INSTANCE_NAME] --service-account &#34;your.gserviceaccount.com&#34; --scopes &#34;https://www.googleapis.com/auth/firebase.database,https://www.googleapis.com/auth/userinfo.email&#34; </code></pre></section> </div> <h2 id="next_steps" data-text="Next steps">Next steps</h2> <p>Learn about Firebase:</p> <ul> <li><p>Explore <a href="/web/20210428194054/https://firebase.google.com/docs/samples">sample Firebase apps</a>.</p></li> <li><p>Explore the open source code in GitHub for <a href="//web.archive.org/web/20210428194054/https://github.com/firebase/firebase-admin-node">Node.js</a>, <a href="//web.archive.org/web/20210428194054/https://github.com/firebase/firebase-admin-java">Java</a>, and <a href="//web.archive.org/web/20210428194054/https://github.com/firebase/firebase-admin-python">Python</a>.</p></li> <li><p>Read <a href="https://web.archive.org/web/20210428194054/https://medium.com/@hiranya911">Admin SDK-related blog posts</a> by one of the creators of the Admin SDK. For example: <a href="https://web.archive.org/web/20210428194054/https://medium.com/faun/firebase-accessing-firestore-and-firebase-through-a-proxy-server-c6c6029cddb1">Accessing Firestore and Firebase through a proxy server</a>.</p></li> </ul> <p>Add Firebase features to your app:</p> <ul> <li>Write a serverless backend with <a href="/web/20210428194054/https://firebase.google.com/docs/functions">Cloud Functions</a>.</li> <li>Store info with <a href="/web/20210428194054/https://firebase.google.com/docs/database">Realtime Database</a> or blob data with <a href="/web/20210428194054/https://firebase.google.com/docs/storage">Cloud Storage</a>.</li> <li>Receive notifications with <a href="/web/20210428194054/https://firebase.google.com/docs/cloud-messaging">Cloud Messaging</a>.</li> </ul> </div> <devsite-thumb-rating position="footer"> <template class="thumb-down-categories"> [{ "type": "thumb-down", "id": "missingTheInformationINeed", "label":"Missing the information I need" },{ "type": "thumb-down", "id": "tooComplicatedTooManySteps", "label":"Too complicated / too many steps" },{ "type": "thumb-down", "id": "outOfDate", "label":"Out of date" },{ "type": "thumb-down", "id": "samplesCodeIssue", "label":"Samples / code issue" },{ "type": "thumb-down", "id": "otherDown", "label":"Other" }] </template> <template class="thumb-up-categories"> [{ "type": "thumb-up", "id": "easyToUnderstand", "label":"Easy to understand" },{ "type": "thumb-up", "id": "solvedMyProblem", "label":"Solved my problem" },{ "type": "thumb-up", "id": "otherUp", "label":"Other" }] </template> <template class="thumb-rating-feedback"> <devsite-feedback position="thumb-rating" project-name="Firebase" product-id="719752" bucket="" context="" version="t-devsite-webserver-20210422-r01-rc01.434751840001528656" data-label="Send Feedback Button" track-type="feedback" track-name="sendFeedbackLink" track-metadata-position="thumb-rating" project-feedback-url="https://firebase.google.com/support/contact/bugs-features/" project-icon="https://firebase.google.com/_static/firebase/images/logo.png" project-support-url="https://firebase.google.com/support/" feedback-type="thumb-rating"> <button> Need to tell us more? </button> </devsite-feedback> </template> </devsite-thumb-rating> <devsite-feedback position="footer" project-name="Firebase" product-id="719752" bucket="" context="" version="t-devsite-webserver-20210422-r01-rc01.434751840001528656" data-label="Send Feedback Button" track-type="feedback" track-name="sendFeedbackLink" track-metadata-position="footer" project-feedback-url="https://firebase.google.com/support/contact/bugs-features/" project-icon="https://firebase.google.com/_static/firebase/images/logo.png" project-support-url="https://firebase.google.com/support/" feedback-type="thumb-rating"> <button> Send feedback </button> </devsite-feedback> </article> <devsite-content-footer class="nocontent"> <p>Except as otherwise noted, the content of this page is licensed under the <a href="https://web.archive.org/web/20210428194054/https://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 License</a>, and code samples are licensed under the <a href="https://web.archive.org/web/20210428194054/https://www.apache.org/licenses/LICENSE-2.0">Apache 2.0 License</a>. For details, see the <a href="https://web.archive.org/web/20210428194054/https://developers.google.com/site-policies">Google Developers Site Policies</a>. Java is a registered trademark of Oracle and/or its affiliates.</p> <p>Last updated 2021-04-28 UTC.</p> </devsite-content-footer> </devsite-content> </main> <devsite-footer-promos class="devsite-footer"> </devsite-footer-promos> <devsite-footer-linkboxes class="devsite-footer"> <nav class="devsite-footer-linkboxes nocontent" aria-label="Footer links"> <ul class="devsite-footer-linkboxes-list"> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Learn</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="/web/20210428194054/https://firebase.google.com/docs/guides/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)"> Guides </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/web/20210428194054/https://firebase.google.com/docs/reference/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)"> Reference </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/web/20210428194054/https://firebase.google.com/docs/samples/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)"> Samples </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/web/20210428194054/https://firebase.google.com/docs/libraries/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)"> Libraries </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//web.archive.org/web/20210428194054/https://github.com/firebase/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 5)"> GitHub </a> </li> </ul> </li> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Stay connected</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="//web.archive.org/web/20210428194054/https://firebase.googleblog.com/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)"> Blog </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/web/20210428194054/https://firebase.google.com/summit/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)"> Firebase Summit </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//web.archive.org/web/20210428194054/https://www.facebook.com/Firebase/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)"> Facebook </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//web.archive.org/web/20210428194054/https://twitter.com/Firebase" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)"> Twitter </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//web.archive.org/web/20210428194054/https://www.youtube.com/user/Firebase" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 5)"> YouTube </a> </li> </ul> </li> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Support</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="/web/20210428194054/https://firebase.google.com/support/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)"> Contact support </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//web.archive.org/web/20210428194054/https://stackoverflow.com/questions/tagged/firebase" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)"> Stack Overflow </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//web.archive.org/web/20210428194054/https://firebase.community/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)"> Slack community </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//web.archive.org/web/20210428194054/https://groups.google.com/forum/#!forum/firebase-talk" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)"> Google group </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/web/20210428194054/https://firebase.google.com/support/releases" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 5)"> Release notes </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/web/20210428194054/https://firebase.google.com/support/faq/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 6)"> FAQs </a> </li> </ul> </li> </ul> </nav> </devsite-footer-linkboxes> <devsite-footer-utility class="devsite-footer"> <div class="devsite-footer-utility nocontent"> <nav class="devsite-footer-sites" aria-label="Other Google Developers websites"> <a href="https://web.archive.org/web/20210428194054/https://developers.google.com/" class="devsite-footer-sites-logo-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Google Developers Link"> <img class="devsite-footer-sites-logo" src="https://web.archive.org/web/20210428194054im_/https://www.gstatic.com/devrel-devsite/prod/v03a3d4c6437e99a41d40c6bdaf7de2967257b2f68f85375303e5316db6e039e3/firebase/images/lockup-developers.svg" loading="lazy" alt="Google Developers"> </a> <ul class="devsite-footer-sites-list"> <li class="devsite-footer-sites-item"> <a href="//web.archive.org/web/20210428194054/https://developer.android.com/" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Android Link"> Android </a> </li> <li class="devsite-footer-sites-item"> <a href="//web.archive.org/web/20210428194054/https://developer.chrome.com/home" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Chrome Link"> Chrome </a> </li> <li class="devsite-footer-sites-item"> <a href="//web.archive.org/web/20210428194054/https://firebase.google.com/" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Firebase Link"> Firebase </a> </li> <li class="devsite-footer-sites-item"> <a href="//web.archive.org/web/20210428194054/https://cloud.google.com/" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Google Cloud Platform Link"> Google Cloud Platform </a> </li> <li class="devsite-footer-sites-item"> <a href="//web.archive.org/web/20210428194054/https://developers.google.com/products/" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer All products Link"> All products </a> </li> </ul> </nav> <nav class="devsite-footer-utility-links" aria-label="Utility links"> <ul class="devsite-footer-utility-list"> <li class="devsite-footer-utility-item "> <a class="devsite-footer-utility-link gc-analytics-event" href="/web/20210428194054/https://firebase.google.com/terms/" data-category="Site-Wide Custom Events" data-label="Footer Terms link"> Terms </a> </li> <li class="devsite-footer-utility-item "> <a class="devsite-footer-utility-link gc-analytics-event" href="//web.archive.org/web/20210428194054/https://policies.google.com/privacy" data-category="Site-Wide Custom Events" data-label="Footer Privacy link"> Privacy </a> </li> </ul> <devsite-language-selector> <devsite-select class="devsite-language-selector-menu"> <select aria-label="Select your language preference." class="devsite-language-selector-select" name="language" track-name="click" track-type="languageSelector"> <option>Language</option> <option value="en" lang="en" track-metadata-original-language="en" track-metadata-selected-language="en" track-name="changed" track-type="languageSelector"> English </option> <option value="id" lang="id" track-metadata-original-language="en" track-metadata-selected-language="id" track-name="changed" track-type="languageSelector"> Bahasa Indonesia </option> <option value="de" lang="de" track-metadata-original-language="en" track-metadata-selected-language="de" track-name="changed" track-type="languageSelector"> Deutsch </option> <option value="es_419" lang="es_419" track-metadata-original-language="en" track-metadata-selected-language="es_419" track-name="changed" track-type="languageSelector"> Español – América Latina </option> <option value="fr" lang="fr" track-metadata-original-language="en" track-metadata-selected-language="fr" track-name="changed" track-type="languageSelector"> Français </option> <option value="it" lang="it" track-metadata-original-language="en" track-metadata-selected-language="it" track-name="changed" track-type="languageSelector"> Italiano </option> <option value="pl" lang="pl" track-metadata-original-language="en" track-metadata-selected-language="pl" track-name="changed" track-type="languageSelector"> Polski </option> <option value="pt_br" lang="pt_br" track-metadata-original-language="en" track-metadata-selected-language="pt_br" track-name="changed" track-type="languageSelector"> Português – Brasil </option> <option value="vi" lang="vi" track-metadata-original-language="en" track-metadata-selected-language="vi" track-name="changed" track-type="languageSelector"> Tiếng Việt </option> <option value="tr" lang="tr" track-metadata-original-language="en" track-metadata-selected-language="tr" track-name="changed" track-type="languageSelector"> Türkçe </option> <option value="ru" lang="ru" track-metadata-original-language="en" track-metadata-selected-language="ru" track-name="changed" track-type="languageSelector"> Русский </option> <option value="he" lang="he" track-metadata-original-language="en" track-metadata-selected-language="he" track-name="changed" track-type="languageSelector"> עברית&#39; </option> <option value="ar" lang="ar" track-metadata-original-language="en" track-metadata-selected-language="ar" track-name="changed" track-type="languageSelector"> العربيّة </option> <option value="fa" lang="fa" track-metadata-original-language="en" track-metadata-selected-language="fa" track-name="changed" track-type="languageSelector"> فارسی </option> <option value="hi" lang="hi" track-metadata-original-language="en" track-metadata-selected-language="hi" track-name="changed" track-type="languageSelector"> हिंदी </option> <option value="bn" lang="bn" track-metadata-original-language="en" track-metadata-selected-language="bn" track-name="changed" track-type="languageSelector"> বাংলা </option> <option value="th" lang="th" track-metadata-original-language="en" track-metadata-selected-language="th" track-name="changed" track-type="languageSelector"> ภาษาไทย </option> <option value="zh_cn" lang="zh_cn" track-metadata-original-language="en" track-metadata-selected-language="zh_cn" track-name="changed" track-type="languageSelector"> 中文 – 简体 </option> <option value="zh_tw" lang="zh_tw" track-metadata-original-language="en" track-metadata-selected-language="zh_tw" track-name="changed" track-type="languageSelector"> 中文 – 繁體 </option> <option value="ja" lang="ja" track-metadata-original-language="en" track-metadata-selected-language="ja" track-name="changed" track-type="languageSelector"> 日本語 </option> <option value="ko" lang="ko" track-metadata-original-language="en" track-metadata-selected-language="ko" track-name="changed" track-type="languageSelector"> 한국어 </option> </select> </devsite-select> </devsite-language-selector> </nav> </div> </devsite-footer-utility> </section></section> <devsite-sitemask></devsite-sitemask> <devsite-snackbar></devsite-snackbar> <devsite-tooltip></devsite-tooltip> <devsite-heading-link></devsite-heading-link> <devsite-analytics enable-analytics-iframe> <script type="application/json" analytics>[]</script> <script type="application/json" gtm>{"parameters": {"freeTrialEligibleUser": "False", "internalUser": "False", "language": {"machineTranslated": "False", "requested": "en", "served": "en"}, "pageType": "article", "projectName": "Firebase", "scriptsafe": null, "signedIn": "False", "tenant": "firebase", "recommendations": {"sourcePage": "", "sourceType": 0, "sourceRank": 0, "sourceIdenticalDescriptions": 0, "sourceTitleWords": 0, "sourceDescriptionWords": 0, "experiment": ""}}, "tags": ["GTM-N84485"]}</script> </devsite-analytics> <devsite-badger></devsite-badger> <firebase-gtm></firebase-gtm> <script nonce="yDX8tGVWiuKu84/nxAIVdwQ1Sp3drO"> (function(d,e,v,s,i,t,E){d['GoogleDevelopersObject']=i; t=e.createElement(v);t.async=1;t.src=s;E=e.getElementsByTagName(v)[0]; E.parentNode.insertBefore(t,E);})(window, document, 'script', 'https://web.archive.org/web/20210428194054/https://www.gstatic.com/devrel-devsite/prod/v03a3d4c6437e99a41d40c6bdaf7de2967257b2f68f85375303e5316db6e039e3/firebase/js/app_loader.js', '[4,"en",null,"/js/devsite_app_module.js","https://web.archive.org/web/20210428194054/https://www.gstatic.com/devrel-devsite/prod/v03a3d4c6437e99a41d40c6bdaf7de2967257b2f68f85375303e5316db6e039e3","https://web.archive.org/web/20210428194054/https://www.gstatic.com/devrel-devsite/prod/v03a3d4c6437e99a41d40c6bdaf7de2967257b2f68f85375303e5316db6e039e3/firebase","https://web.archive.org/web/20210428194054/https://firebase-dot-devsite-v2-prod.appspot.com",null,null,["/_pwa/firebase/manifest.json","https://web.archive.org/web/20210428194054/https://www.gstatic.com/devrel-devsite/prod/v03a3d4c6437e99a41d40c6bdaf7de2967257b2f68f85375303e5316db6e039e3/images/video-placeholder.svg","https://web.archive.org/web/20210428194054/https://www.gstatic.com/devrel-devsite/prod/v03a3d4c6437e99a41d40c6bdaf7de2967257b2f68f85375303e5316db6e039e3/firebase/images/favicon.png","https://web.archive.org/web/20210428194054/https://www.gstatic.com/devrel-devsite/prod/v03a3d4c6437e99a41d40c6bdaf7de2967257b2f68f85375303e5316db6e039e3/firebase/images/lockup.png","https://web.archive.org/web/20210428194054/https://fonts.googleapis.com/css?family=Google+Sans:400,500|Roboto:400,400italic,500,500italic,700,700italic|Roboto+Mono:400,500,700|Material+Icons"],1,null,[1,6,8,12,14,17,21,25,40,50,63,70,75,76,80,87,88,91,92,93,97,98,100,101,102,103,105,107,108,111,112,113,115,116,117,118,120,122,124,125,127,129,131,133,134,135],"AIzaSyAP-jjEJBzmIyKR4F-3XITp8yM9T1gEEI8","AIzaSyB6xiKGDR5O3Ak2okS4rLkauxGUG7XP0hg"]') </script> <devsite-a11y-announce></devsite-a11y-announce> </body> </html><!-- FILE ARCHIVED ON 19:40:54 Apr 28, 2021 AND RETRIEVED FROM THE INTERNET ARCHIVE ON 14:09:23 Jan 07, 2025. JAVASCRIPT APPENDED BY WAYBACK MACHINE, COPYRIGHT INTERNET ARCHIVE. ALL OTHER CONTENT MAY ALSO BE PROTECTED BY COPYRIGHT (17 U.S.C. SECTION 108(a)(3)). --> <!-- playback timings (ms): captures_list: 0.598 exclusion.robots: 0.031 exclusion.robots.policy: 0.019 esindex: 0.013 cdx.remote: 6.942 LoadShardBlock: 334.959 (3) PetaboxLoader3.datanode: 461.001 (4) PetaboxLoader3.resolve: 114.932 (2) load_resource: 279.912 -->

Pages: 1 2 3 4 5 6 7 8 9 10