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","20201003051618","https://web.archive.org/","web","/_static/", "1601702178"); </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/20201003051618/https://firebase.google.com/_pwa/firebase/manifest.json" crossorigin="use-credentials"> <link rel="preconnect" href="//web.archive.org/web/20201003051618/https://www.gstatic.com/" crossorigin> <link rel="preconnect" href="//web.archive.org/web/20201003051618/https://fonts.gstatic.com/" crossorigin> <link rel="preconnect" href="//web.archive.org/web/20201003051618/https://fonts.googleapis.com/" crossorigin> <link rel="preconnect" href="//web.archive.org/web/20201003051618/https://apis.google.com/" crossorigin> <link rel="preconnect" href="//web.archive.org/web/20201003051618/https://www.google-analytics.com/" crossorigin> <link rel="stylesheet" href="//web.archive.org/web/20201003051618cs_/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/20201003051618cs_/https://www.gstatic.com/devrel-devsite/prod/v85e39fe21f53c758adf6c791fb94a7a2182cff2705b3dc8ed7c59fc745471159/firebase/css/app.css"> <noscript> </noscript> <link rel="shortcut icon" href="https://web.archive.org/web/20201003051618im_/https://www.gstatic.com/devrel-devsite/prod/v85e39fe21f53c758adf6c791fb94a7a2182cff2705b3dc8ed7c59fc745471159/firebase/images/favicon.png"> <link rel="apple-touch-icon" href="https://web.archive.org/web/20201003051618im_/https://www.gstatic.com/devrel-devsite/prod/v85e39fe21f53c758adf6c791fb94a7a2182cff2705b3dc8ed7c59fc745471159/firebase/images/touchicon-180.png"><link rel="canonical" href="https://web.archive.org/web/20201003051618/https://firebase.google.com/docs/admin/setup"><link rel="search" type="application/opensearchdescription+xml" title="Firebase" href="https://web.archive.org/web/20201003051618/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/20201003051618/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 type="article" theme="firebase-theme" class="" layout="docs" pending> <devsite-progress type="indeterminate" id="app-progress"></devsite-progress> <section class="devsite-wrapper"><devsite-header> <div class="devsite-header--inner"> <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/20201003051618/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/20201003051618im_/https://www.gstatic.com/devrel-devsite/prod/v85e39fe21f53c758adf6c791fb94a7a2182cff2705b3dc8ed7c59fc745471159/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> <a href="/web/20201003051618/https://firebase.google.com/products" 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> </tab> <tab> <a href="/web/20201003051618/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="/web/20201003051618/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 active> <a href="/web/20201003051618/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> </tab> <tab> <a href="/web/20201003051618/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="/web/20201003051618/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 enable-signin enable-search enable-suggestions enable-query-completion project-name="Firebase" tenant-name="Firebase"> <form class="devsite-search-form" action="https://web.archive.org/web/20201003051618/https://firebase.google.com/s/results" method="GET"> <div class="devsite-search-container"> <div class="devsite-searchbox"> <input aria-label="Search" aria-haspopup="false" 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"> עברית' </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/20201003051618/https://console.firebase.google.com/" data-category="Site-Wide Custom Events" data-label="Site header link"> Go to console </a> <devsite-user 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="/web/20201003051618/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"> 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="/web/20201003051618/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 active> <a href="/web/20201003051618/https://firebase.google.com/docs/guides" class="gc-analytics-event " track-type="globalNav" track-metadata-position="nav" track-metadata-eventdetail="nav" track-name="guides" aria-label="Guides, selected" data-category="Site-Wide Custom Events" data-label="Tab: Guides"> Guides </a> </tab> <tab> <a href="/web/20201003051618/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="/web/20201003051618/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="/web/20201003051618/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/20201003051618/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/20201003051618im_/https://www.gstatic.com/devrel-devsite/prod/v85e39fe21f53c758adf6c791fb94a7a2182cff2705b3dc8ed7c59fc745471159/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/20201003051618/https://firebase.google.com/products" 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> </li> <li class="devsite-nav-item"> <a href="/web/20201003051618/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/20201003051618/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/20201003051618/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"> <li class="devsite-nav-item"> <a href="/web/20201003051618/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/20201003051618/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: Guides" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="guides"> <span class="devsite-nav-text" tooltip menu="_book"> Guides </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="_book"> </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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"> <ul class="devsite-nav-list" menu="_book"> <li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/guides" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Guides</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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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-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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/https://firebase.google.com/docs/projects/iam/roles-primitive" 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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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-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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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> <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>Analytics</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/analytics" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/analytics/get-started" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/analytics/events" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Log Events</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/analytics/user-properties" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Set User Properties</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/analytics/debugview" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Debug Events</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/analytics/screenviews" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Track Screens</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/analytics/userid" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Set a User ID</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/analytics/measure-ecommerce" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Measure Ecommerce</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/analytics/webview" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use in a WebView</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/analytics/extend-with-functions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Extend with Cloud Functions</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/analytics/configure-data-collection" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Configure Data Collection and Usage</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/analytics/errors" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Error Codes</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>C++</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/analytics/cpp/start" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/analytics/cpp/events" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Log Events</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/analytics/cpp/properties" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Set User Properties</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>Unity</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/analytics/unity/start" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/analytics/unity/events" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Log Events</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/analytics/unity/properties" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Set User Properties</span></a></li></ul></devsite-expandable-nav></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>Extensions</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/20201003051618/https://firebase.google.com/docs/extensions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</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>Use an extension in your project</span></div></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/extensions/overview-use-extensions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/extensions/install-extensions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Install an extension</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/extensions/manage-installed-extensions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Manage installed extensions</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/extensions/permissions-granted-to-extension" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Permissions granted to an extension</span></a></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item devsite-nav-divider devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"><span class="devsite-nav-text" tooltip>Develop</span></div></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>Authentication</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/where-to-start" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Where do I start?</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/users" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Users in Firebase Projects</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>iOS</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/ios/firebaseui" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Sign in with a pre-built UI</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/ios/start" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/ios/manage-users" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Manage Users</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/ios/password-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Password Authentication</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/ios/email-link-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Email Link Authentication</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/ios/google-signin" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Google Sign-In</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/ios/facebook-login" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Facebook Login</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/ios/apple" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Sign in with Apple</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/ios/twitter-login" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Twitter Login</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/ios/github-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>GitHub</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/ios/microsoft-oauth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Microsoft</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/ios/yahoo-oauth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Yahoo</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/ios/game-center" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Game Center Sign-in</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/ios/phone-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Phone Number</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/ios/custom-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use a Custom Auth System</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/ios/anonymous-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Anonymous Authentication</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/ios/single-sign-on" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Enabling cross-app authentication with shared iOS Keychain</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/ios/account-linking" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Link Multiple Auth Providers</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/ios/passing-state-in-email-actions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Passing State in Email Actions</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/ios/errors" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Handle Errors</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>Android</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/android/firebaseui" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Sign in with a pre-built UI</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/android/start" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Started with the Firebase SDK</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/android/manage-users" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Manage Users</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/android/password-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Password Authentication</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/android/email-link-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Email Link Authentication</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/android/google-signin" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Google Sign-In</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/android/facebook-login" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Facebook Login</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/android/apple" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Sign in with Apple</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/android/twitter-login" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Twitter</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/android/github-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>GitHub</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/android/microsoft-oauth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Microsoft</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/android/yahoo-oauth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Yahoo</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/android/play-games" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Play Games Sign-in</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/android/phone-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Phone Number</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/android/custom-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use a Custom Auth System</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/android/anonymous-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Anonymous Authentication</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/android/account-linking" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Link Multiple Auth Providers</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/android/passing-state-in-email-actions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Passing State in Email Actions</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>Web</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/web/firebaseui" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Sign in with a pre-built UI</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/web/start" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/web/manage-users" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Manage Users</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/web/password-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Password Authentication</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/web/email-link-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Email Link Authentication</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/web/google-signin" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Google Sign-In</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/web/facebook-login" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Facebook Login</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/web/apple" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Sign in with Apple</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/web/twitter-login" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Twitter</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/web/github-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>GitHub</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/web/microsoft-oauth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Microsoft</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/web/yahoo-oauth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Yahoo</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/web/phone-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Phone Number</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/web/custom-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use a Custom Auth System</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/web/anonymous-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Anonymous Authentication</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/web/account-linking" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Link Multiple Auth Providers</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/web/cordova" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>OAuth Sign-In for Cordova</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/web/auth-state-persistence" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Auth State Persistence</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/web/passing-state-in-email-actions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Passing State in Email Actions</span></a></li><li class="devsite-nav-item devsite-nav-beta"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/web/service-worker-sessions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Service Worker Sessions</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-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>C++</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/cpp/start" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/cpp/manage-users" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Manage Users</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/cpp/password-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Password Authentication</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/cpp/google-signin" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Google Sign-in</span></a></li><li class="devsite-nav-item devsite-nav-beta"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/cpp/play-games" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Play Games Sign-in</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/20201003051618/https://firebase.google.com/docs/auth/cpp/github-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>GitHub</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/cpp/facebook-login" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Facebook Login</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/cpp/apple" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Sign in with Apple</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/cpp/twitter-login" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Twitter Login</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/cpp/microsoft-oauth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Microsoft</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/cpp/yahoo-oauth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Yahoo</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/cpp/phone-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Phone Number</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/cpp/custom-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use a Custom Auth System</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/cpp/anonymous-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Anonymous Authentication</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/cpp/account-linking" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Link Multiple Auth Providers</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>Unity</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/unity/start" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/unity/manage-users" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Manage Users</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/unity/password-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Password Authentication</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/unity/google-signin" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Google Sign-in</span></a></li><li class="devsite-nav-item devsite-nav-beta"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/unity/play-games" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Play Games Sign-in</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/20201003051618/https://firebase.google.com/docs/auth/unity/github-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>GitHub Authentication</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/unity/facebook-login" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Facebook Login</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/unity/apple" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Sign in with Apple</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/unity/twitter-login" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Twitter Login</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/unity/microsoft-oauth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Microsoft</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/unity/yahoo-oauth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Yahoo</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/unity/phone-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Phone Number</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/unity/custom-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use a Custom Auth System</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/unity/anonymous-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Anonymous Authentication</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/unity/account-linking" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Link Multiple Auth Providers</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>Admin</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/admin" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/admin/manage-users" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Manage Users</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/admin/import-users" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Import Users</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/admin/create-custom-tokens" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Create Custom Tokens</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/admin/verify-id-tokens" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Verify ID Tokens</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/admin/manage-sessions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Manage User Sessions</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/admin/manage-cookies" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Manage Session Cookies</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/admin/custom-claims" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Control Access with Custom Claims</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/admin/email-action-links" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Generating Email Action Links</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/admin/errors" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Errors</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/admin/migrate-admin" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Migration Guide</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/custom-email-handler" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Customize the Email Action Handler</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/extend-with-functions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Extend with Cloud Functions</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/case-studies" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Case Studies</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/auth/limits" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Usage Limits</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>Realtime Database</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/database" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/database/rtdb-vs-firestore" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Choose a Database</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>iOS</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/database/ios/start" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/database/ios/structure-data" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Structure Data</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/database/ios/read-and-write" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Read and Write Data</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/database/ios/lists-of-data" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Work with Lists of Data</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/database/ios/offline-capabilities" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Enable Offline Capabilities</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>Android</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/database/android/start" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/database/android/structure-data" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Structure Data</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/database/android/read-and-write" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Read and Write Data</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/database/android/lists-of-data" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Work with Lists of Data</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/database/android/offline-capabilities" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Enable Offline Capabilities</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>Web</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/database/web/start" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/database/web/structure-data" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Structure Data</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/database/web/read-and-write" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Read and Write Data</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/database/web/lists-of-data" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Work with Lists of Data</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/database/web/offline-capabilities" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Enable Offline Capabilities</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>Admin</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/database/admin/start" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/database/admin/structure-data" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Structure Data</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/database/admin/save-data" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Save Data</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/database/admin/retrieve-data" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Retrieve Data</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>REST</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/database/rest/start" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/database/rest/structure-data" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Structure Data</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/database/rest/save-data" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Save Data</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/database/rest/retrieve-data" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Retrieve Data</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/database/rest/auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Authenticate REST Requests</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>C++</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/database/cpp/start" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/database/cpp/structure-data" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Structure Data</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/database/cpp/save-data" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Save Data</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/database/cpp/retrieve-data" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Retrieve Data</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>Unity</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/database/unity/start" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/database/unity/structure-data" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Structure Data</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/database/unity/save-data" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Save Data</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/database/unity/retrieve-data" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Retrieve Data</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>Security & Rules</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/database/security" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Understand Rules</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/database/security/get-started" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/database/security/core-syntax" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Structure Security Rules</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/database/security/rules-conditions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Write Conditions for Security Rules</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/database/security/indexing-data" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Index Data</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/database/rest/app-management" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Manage Rules via REST</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>Usage and Performance</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/database/usage/billing" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Understand Billing</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/database/usage/limits" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Realtime Database Limits</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/database/usage/monitor-usage" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Monitor Database Usage</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/database/usage/monitor-performance" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Monitor Database Performance</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/database/usage/sharding" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Scale with Multiple Databases</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/database/usage/profile" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Profile Your Database</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/database/usage/optimize" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Optimize Database Performance</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/database/backups" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Automated Backups</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/database/extend-with-functions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Extend with Cloud Functions</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/database/video-series" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Video series: Firebase for SQL Developers</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>Cloud Firestore</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/firestore" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/firestore/quickstart" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get started</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>Understand Cloud Firestore</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/firestore/rtdb-vs-firestore" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Compare Cloud Firestore and Realtime Database</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/firestore/data-model" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Data model</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/firestore/manage-data/data-types" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Data types</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/firestore/client/libraries" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>SDKs and client libraries</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/firestore/query-data/index-overview" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Index types</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/firestore/locations" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Database locations</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 and manage data</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/firestore/manage-data/structure-data" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Structure data</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/firestore/manage-data/add-data" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Add data</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/firestore/manage-data/transactions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Transactions and batched writes</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/firestore/transaction-data-contention" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Data contention in transaction</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/firestore/manage-data/delete-data" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Delete data</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/firestore/using-console" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Manage Cloud Firestore with the Firebase Console</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/firestore/manage-data/export-import" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Export and import data</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/firestore/manage-data/move-data" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Move data between projects</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>Read data</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/firestore/query-data/get-data" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get data once</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/firestore/query-data/listen" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Listen for realtime updates</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/firestore/query-data/queries" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Perform simple and compound queries</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/firestore/query-data/order-limit-data" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Order and limit data</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/firestore/query-data/query-cursors" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Paginate data with query cursors</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/firestore/manage-data/enable-offline" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Access data offline</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/firestore/query-data/indexing" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Manage indexes</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>Secure and validate data</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/firestore/security/overview" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/firestore/security/get-started" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get started</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/firestore/security/rules-structure" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Structure Security Rules</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/firestore/security/rules-conditions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Writing conditions for Security Rules</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/firestore/security/insecure-rules" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Fix insecure rules</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/firestore/security/test-rules-emulator" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Test your Security Rules</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/firestore/security/rules-query" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Securely query data</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>Solutions</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/firestore/solutions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/firestore/solutions/aggregation" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Aggregation Queries</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/firestore/solutions/counters" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Distributed counters</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/firestore/solutions/search" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Full-text search</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/firestore/solutions/presence" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Build presence</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/firestore/solutions/role-based-access" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Secure data access for users and groups</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/firestore/solutions/delete-collections" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Delete data with a callable Cloud Function</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/firestore/solutions/schedule-export" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Schedule data exports</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/firestore/solutions/shard-timestamp" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Sharded timestamps</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/firestore/solutions/automate-database-create" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Automating database creation</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/firestore/solutions/index-map-field" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Reduce index costs with map fields</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>Usage, limits, and pricing</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/firestore/quotas" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Usage and limits</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/firestore/monitor-usage" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Monitor usage</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/firestore/pricing" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Understand Cloud Firestore billing</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/firestore/billing-example" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Example Cloud Firestore costs</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/firestore/storage-size" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Understand storage size calculations</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/firestore/best-practices" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Best practices for Cloud Firestore</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>Cloud Firestore integrations</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/firestore/use-rest-api" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use the Cloud Firestore REST API</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/firestore/firestore-for-rtdb" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use Cloud Firestore and Realtime Database</span></a></li><li class="devsite-nav-item devsite-nav-beta"><a href="/web/20201003051618/https://firebase.google.com/docs/firestore/extend-with-functions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Extend with Cloud Functions</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/20201003051618/https://firebase.google.com/docs/firestore/library-integrations" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Third-party library integrations</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>API reference</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/package-summary" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/reference/swift/firebasefirestore/api/reference/Classes" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS — Swift</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/reference/ios/firebasefirestore/api/reference/Classes" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS — Objective-C</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/reference/js/firebase.firestore" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Web</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/reference/functions/providers_firestore_" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Cloud Functions</span></a></li><li class="devsite-nav-item"><a href="//web.archive.org/web/20201003051618/https://googleapis.dev/nodejs/firestore/latest/" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Node.js</span></a></li><li class="devsite-nav-item"><a href="//web.archive.org/web/20201003051618/https://googleapis.github.io/google-cloud-java/google-cloud-clients/apidocs/index.html?com/google/cloud/firestore/package-summary.html" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Java</span></a></li><li class="devsite-nav-item"><a href="//web.archive.org/web/20201003051618/https://googleapis.github.io/google-cloud-python/latest/firestore/client.html" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Python</span></a></li><li class="devsite-nav-item"><a href="//web.archive.org/web/20201003051618/https://godoc.org/cloud.google.com/go/firestore" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Go</span></a></li><li class="devsite-nav-item"><a href="//web.archive.org/web/20201003051618/https://googleapis.github.io/google-cloud-dotnet/docs/Google.Cloud.Firestore/" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>C#</span></a></li><li class="devsite-nav-item"><a href="//web.archive.org/web/20201003051618/https://googleapis.github.io/google-cloud-php/#/docs/cloud-firestore/latest/firestore/readme" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>PHP</span></a></li><li class="devsite-nav-item"><a href="//web.archive.org/web/20201003051618/https://googleapis.github.io/google-cloud-ruby/docs/google-cloud-firestore/latest/Google/Firestore/V1beta1" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Ruby</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/firestore/reference/rest" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>REST</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/firestore/reference/rpc" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>RPC</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>Samples</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/firestore/client/samples-ios" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/firestore/client/samples-android" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/firestore/client/samples-web" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Web</span></a></li></ul></devsite-expandable-nav></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>Storage</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/storage" 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>iOS</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/storage/ios/start" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/storage/ios/create-reference" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Create a Reference</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/storage/ios/upload-files" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Upload Files</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/storage/ios/download-files" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Download Files</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/storage/ios/file-metadata" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use File Metadata</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/storage/ios/delete-files" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Delete Files</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/storage/ios/list-files" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>List Files</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/storage/ios/handle-errors" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Handle Errors</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>Android</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/storage/android/start" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/storage/android/create-reference" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Create a Reference</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/storage/android/upload-files" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Upload Files</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/storage/android/download-files" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Download Files</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/storage/android/file-metadata" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use File Metadata</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/storage/android/delete-files" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Delete Files</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/storage/android/list-files" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>List Files</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/storage/android/handle-errors" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Handle Errors</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>Web</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/storage/web/start" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/storage/web/create-reference" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Create a Reference</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/storage/web/upload-files" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Upload Files</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/storage/web/download-files" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Download Files</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/storage/web/file-metadata" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use File Metadata</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/storage/web/delete-files" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Delete Files</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/storage/web/list-files" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>List Files</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/storage/web/handle-errors" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Handle Errors</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>Admin</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/storage/admin/start" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Started</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>C++</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/storage/cpp/start" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/storage/cpp/create-reference" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Create a Reference</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/storage/cpp/upload-files" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Upload Files</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/storage/cpp/download-files" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Download Files</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/storage/cpp/file-metadata" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use File Metadata</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/storage/cpp/delete-files" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Delete Files</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/storage/cpp/handle-errors" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Handle Errors</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>Unity</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/storage/unity/start" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/storage/unity/create-reference" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Create a Reference</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/storage/unity/upload-files" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Upload Files</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/storage/unity/download-files" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Download Files</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/storage/unity/file-metadata" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use File Metadata</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/storage/unity/delete-files" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Delete Files</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/storage/unity/handle-errors" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Handle Errors</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>Security & Rules</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/storage/security" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Understand Security</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/storage/security/get-started" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/storage/security/core-syntax" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Structure Security Rules</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/storage/security/rules-conditions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Write Conditions for Security Rules</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/storage/monitor-storage" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Monitor activity</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/storage/extend-with-functions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Extend with Cloud Functions</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/storage/gcp-integration" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Integrate with Google Cloud</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>Hosting</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/hosting" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/hosting/use-cases" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>What can you do with Firebase Hosting?</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/hosting/quickstart" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get started</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/hosting/deploying" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Test locally then deploy</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/hosting/multisites" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Share project resources across multiple sites</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/hosting/custom-domain" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Connect a custom domain</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/hosting/full-config" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Configure hosting behavior</span></a></li><li class="devsite-nav-item devsite-nav-new"><a href="/web/20201003051618/https://firebase.google.com/docs/hosting/i18n-rewrites" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Configure i18n rewrites</span><span class="devsite-nav-icon material-icons" data-icon="new" data-title="New!" aria-hidden="true"></span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/hosting/reserved-urls" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Add SDKs using reserved URLs</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>Serve dynamic content and host microservices</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/hosting/serverless-overview" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/hosting/functions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use Cloud Functions for Firebase</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/hosting/cloud-run" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use Cloud Run</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/hosting/manage-cache" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Manage cache behavior</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/hosting/manage-releases" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Manage releases</span></a></li><li class="devsite-nav-item devsite-nav-new"><a href="/web/20201003051618/https://firebase.google.com/docs/hosting/web-request-logs-and-metrics" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Monitor web request data with Cloud Logging</span><span class="devsite-nav-icon material-icons" data-icon="new" data-title="New!" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-new"><a href="/web/20201003051618/https://firebase.google.com/docs/hosting/usage-quotas-pricing" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Usage, quotas, and pricing</span><span class="devsite-nav-icon material-icons" data-icon="new" data-title="New!" aria-hidden="true"></span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/hosting/api-deploy" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Deploy using the REST API</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>Cloud Functions</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/functions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/functions/use-cases" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>What can I do with Cloud Functions?</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/functions/get-started" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get started</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/functions/beta-v1-diff" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Upgrade to v1.0+ from beta</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>Call functions directly</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/functions/callable" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Call functions from your app</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/functions/http-events" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Call functions via HTTP requests</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/functions/schedule-functions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Run functions on a schedule</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>Trigger background functions</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item devsite-nav-beta"><a href="/web/20201003051618/https://firebase.google.com/docs/functions/firestore-events" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Cloud Firestore triggers</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-beta"><a href="/web/20201003051618/https://firebase.google.com/docs/functions/database-events" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Realtime Database triggers</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-beta"><a href="/web/20201003051618/https://firebase.google.com/docs/functions/rc-events" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Remote Config triggers</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-beta"><a href="/web/20201003051618/https://firebase.google.com/docs/functions/auth-events" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Authentication triggers</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-beta"><a href="/web/20201003051618/https://firebase.google.com/docs/functions/analytics-events" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Analytics triggers</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-deprecated"><a href="/web/20201003051618/https://firebase.google.com/docs/functions/crashlytics-events" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Crashlytics triggers</span><span class="devsite-nav-icon material-icons" data-icon="deprecated" data-title="Deprecated" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-beta"><a href="/web/20201003051618/https://firebase.google.com/docs/functions/gcp-storage-events" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Cloud Storage triggers</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-beta"><a href="/web/20201003051618/https://firebase.google.com/docs/functions/pubsub-events" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Cloud Pub/Sub triggers</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-beta"><a href="/web/20201003051618/https://firebase.google.com/docs/functions/test-lab-events" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Test Lab triggers</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-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>Write functions</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/functions/manage-functions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Manage deployment and runtime options</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/functions/typescript" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Write functions in TypeScript</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/functions/terminate-functions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Sync, async, and promises</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/functions/retries" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Retry asynchronous functions</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/functions/config-env" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Environment configuration</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/functions/organize-functions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Organize functions</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/functions/handle-dependencies" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Handling dependencies</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/functions/networking" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Optimizing networking</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/functions/tips" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Tips & tricks</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>Test functions</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/functions/local-emulator" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Run functions locally</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/functions/unit-testing" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Unit testing functions</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/functions/local-shell" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Test functions interactively</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>Monitor functions</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/functions/writing-and-viewing-logs" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Write and view logs</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/functions/reporting-errors" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Report errors</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/functions/monitored-metrics" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>View monitored metrics</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>API Reference</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/reference/functions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Firebase SDK for Cloud Functions</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/reference/functions/test" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Test SDK</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/functions/callable-reference" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Protocol specification for https.onCall</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/functions/video-series" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Video Series: learn Cloud Functions</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/functions/functions-and-firebase" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Cloud Functions and Firebase</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/functions/locations" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Cloud Functions locations</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/functions/quotas" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Quotas and limits</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>Machine Learning</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/20201003051618/https://firebase.google.com/docs/ml" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</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>Vision</span></div></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>Recognize text</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml/recognize-text" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml/ios/recognize-text" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml/android/recognize-text" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</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>Label images</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml/label-images" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml/ios/label-images" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml/android/label-images" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</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>Recognize landmarks</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml/recognize-landmarks" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml/ios/recognize-landmarks" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml/android/recognize-landmarks" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></devsite-expandable-nav></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>AutoML Vision Edge</span></div></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml/automl-image-labeling" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml/train-image-labeler" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Train image labeling models</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>Label images with your models</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml/ios/label-images-with-automl" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml/android/label-images-with-automl" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml/migrate-automl-datasets" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Migrate datasets</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>Custom Models</span></div></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 a custom model</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml/use-custom-models" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml/ios/use-custom-models" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml/android/use-custom-models" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml/manage-hosted-models" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Deploy & manage custom models</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>Migrate from the legacy API</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml/ios/migrate-from-legacy-api" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml/android/migrate-from-legacy-api" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></devsite-expandable-nav></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>Advanced Topics</span></div></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>A/B test two versions of a model</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml/ios/ab-test-models" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml/android/ab-test-models" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></devsite-expandable-nav></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>Prepare for Production</span></div></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>Protect your Cloud credentials</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml/ios/secure-api-key" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml/android/secure-api-key" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></devsite-expandable-nav></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>Legacy Documentation</span></div></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>ML Kit for Firebase</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml-kit" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</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>Vision</span></div></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>Recognize text</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml-kit/recognize-text" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml-kit/ios/recognize-text" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml-kit/android/recognize-text" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</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>Detect faces</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml-kit/detect-faces" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml-kit/face-detection-concepts" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Concepts</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml-kit/ios/detect-faces" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml-kit/android/detect-faces" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</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>Scan barcodes</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml-kit/read-barcodes" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml-kit/ios/read-barcodes" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml-kit/android/read-barcodes" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</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>Label images</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml-kit/label-images" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml-kit/ios/label-images" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml-kit/android/label-images" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</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>Detect and track objects</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml-kit/object-detection" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml-kit/ios/detect-objects" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml-kit/android/detect-objects" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</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>Recognize landmarks</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml-kit/recognize-landmarks" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml-kit/ios/recognize-landmarks" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml-kit/android/recognize-landmarks" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></devsite-expandable-nav></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>AutoML Vision Edge</span></div></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml-kit/automl-image-labeling" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml-kit/train-image-labeler" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Train image labeling models</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>Label images with your models</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml-kit/ios/label-images-with-automl" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml-kit/android/label-images-with-automl" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml-kit/migrate-automl-datasets" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Migrate datasets</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>Natural Language</span></div></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>Identify the language of text</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml-kit/identify-languages" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml-kit/ios/identify-languages" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml-kit/android/identify-languages" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</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>Translate text</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml-kit/translation" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml-kit/ios/translate-text" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml-kit/android/translate-text" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml-kit/translation-terms" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Usage guidelines</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>Generate smart replies</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml-kit/generate-smart-replies" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml-kit/ios/generate-smart-replies" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml-kit/android/generate-smart-replies" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></devsite-expandable-nav></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>Custom Models</span></div></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 a custom model</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml-kit/use-custom-models" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml-kit/ios/use-custom-models" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml-kit/android/use-custom-models" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml-kit/manage-hosted-models" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Manage hosted custom models</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 a custom TensorFlow Lite build</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml-kit/ios/use-custom-tflite" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml-kit/android/use-custom-tflite" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></devsite-expandable-nav></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>Advanced Topics</span></div></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>A/B test two versions of a model</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml-kit/ios/ab-test-models" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml-kit/android/ab-test-models" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></devsite-expandable-nav></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>Prepare for Production</span></div></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>Reduce app package size</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml-kit/android/reduce-app-size" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</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>Protect your Cloud credentials</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml-kit/ios/secure-api-key" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ml-kit/android/secure-api-key" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</span></a></li></ul></devsite-expandable-nav></li></ul></devsite-expandable-nav></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>Security Rules</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/rules" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/rules/get-started" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get started</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>Understand Security Rules</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/rules/rules-language" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Security Rules language</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/rules/rules-behavior" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>How Security Rules work</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/rules/rules-and-auth" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Security Rules and Firebase Authentication</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>Write Security Rules</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/rules/basics" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Basic Security Rules</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/rules/insecure-rules" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Avoid insecure rules</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/rules/data-validation" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Data validation</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>Test Security Rules</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/rules/emulator-setup" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Set up the emulator</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/rules/unit-tests" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Build unit tests</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/rules/emulator-reports" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Generate test reports</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/rules/simulator" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Quickly validate Security Rules</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/rules/manage-deploy" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Manage and deploy Security Rules</span></a></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item devsite-nav-divider devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"><span class="devsite-nav-text" tooltip>Quality</span></div></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>Crashlytics</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/crashlytics" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/crashlytics/get-started" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get started</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/crashlytics/start-using-analytics" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Start using Google Analytics</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/crashlytics/test-implementation" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Test your implementation</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/crashlytics/customize-crash-reports" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Customize crash reports</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/crashlytics/get-deobfuscated-reports" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get deobfuscated crash reports</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/crashlytics/ndk-reports" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Android NDK crash reports</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/crashlytics/velocity-alerts" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Customize velocity alerts</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/crashlytics/bigquery-export" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Export data to BigQuery</span></a></li><li class="devsite-nav-item devsite-nav-deprecated"><a href="/web/20201003051618/https://firebase.google.com/docs/crashlytics/extend-with-cloud-functions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Extend with Cloud Functions</span><span class="devsite-nav-icon material-icons" data-icon="deprecated" data-title="Deprecated" 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>From Fabric to Firebase</span></div></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/crashlytics/migration-post-linking" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Steps after migrating your app</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/crashlytics/upgrade-sdk" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Upgrade to the Firebase Crashlytics SDK</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/crashlytics/switch-to-analytics" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Switch from Answers to Analytics</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>Deprecated Fabric SDK guides</span></div></li><li class="devsite-nav-item devsite-nav-deprecated"><a href="/web/20201003051618/https://firebase.google.com/docs/crashlytics/customize-crash-reports-fabric-sdk" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Customize crash reports</span><span class="devsite-nav-icon material-icons" data-icon="deprecated" data-title="Deprecated" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-deprecated"><a href="/web/20201003051618/https://firebase.google.com/docs/crashlytics/force-a-crash" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Test your implementation</span><span class="devsite-nav-icon material-icons" data-icon="deprecated" data-title="Deprecated" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-deprecated"><a href="/web/20201003051618/https://firebase.google.com/docs/crashlytics/get-deobfuscated-reports-fabric-sdk" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get deobfuscated crash reports</span><span class="devsite-nav-icon material-icons" data-icon="deprecated" data-title="Deprecated" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-deprecated"><a href="/web/20201003051618/https://firebase.google.com/docs/crashlytics/ndk-reports-fabric-sdk" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Android NDK crash reports</span><span class="devsite-nav-icon material-icons" data-icon="deprecated" data-title="Deprecated" 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>Performance Monitoring</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/perf-mon" 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>Get started</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/perf-mon/get-started-ios" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/perf-mon/get-started-android" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</span></a></li><li class="devsite-nav-item devsite-nav-beta"><a href="/web/20201003051618/https://firebase.google.com/docs/perf-mon/get-started-web" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Web</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-heading"><div class="devsite-nav-title devsite-nav-title-no-path"><span class="devsite-nav-text" tooltip>Learn about automatically collected data</span></div></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/perf-mon/app-start-foreground-background-traces" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>App start, foreground, background (iOS & Android)</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/perf-mon/screen-traces" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Screen rendering (iOS & Android)</span></a></li><li class="devsite-nav-item devsite-nav-beta"><a href="/web/20201003051618/https://firebase.google.com/docs/perf-mon/page-load-traces" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Page loading (web)</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/20201003051618/https://firebase.google.com/docs/perf-mon/network-traces" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>HTTP/S network requests</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>Customize data collection and aggregation</span></div></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/perf-mon/custom-code-traces" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Add monitoring for specific code</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/perf-mon/custom-network-traces" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Add monitoring for specific network requests</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/perf-mon/custom-url-patterns" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Create custom URL patterns</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/perf-mon/disable-sdk" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Disable Performance Monitoring</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>Track, view, and filter data</span></div></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/perf-mon/console" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview of the console</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/perf-mon/attributes" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Filter data using attributes</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/perf-mon/issue-management" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>View performance issues</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/perf-mon/bigquery-export" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Export data to BigQuery</span></a></li><li class="devsite-nav-item devsite-nav-break"></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/perf-mon/troubleshooting" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Troubleshooting</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>Test Lab</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/test-lab" 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>iOS</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/test-lab/ios/firebase-console" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Test with the Firebase console</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/test-lab/ios/command-line" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Test with the gcloud CLI</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/test-lab/game-loop" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Run a Game Loop test</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/test-lab/ios/analyzing-results" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Analyze test results</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/test-lab/ios/available-testing-devices" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Test on available devices</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>Android</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/test-lab/android/overview" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/test-lab/android/firebase-console" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Test with the Firebase console</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/test-lab/android/command-line" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Test with the gcloud CLI</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/test-lab/android/continuous" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Test with CI systems</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/test-lab/android/android-studio" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Test with Android Studio</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/test-lab/android/analyzing-results" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Analyze test results</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/test-lab/android/available-testing-devices" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Test on available devices</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/test-lab/android/instrumentation-test" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Run an instrumentation test</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/test-lab/android/robo-ux-test" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Run a Robo test</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/test-lab/android/game-loop" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Run a Game Loop test</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/test-lab/android/test-screenshots" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Take screenshots in a test</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/test-lab/android/avds" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Test with virtual devices</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-new"><a href="/web/20201003051618/https://firebase.google.com/docs/test-lab/troubleshooting" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Troubleshooting</span><span class="devsite-nav-icon material-icons" data-icon="new" data-title="New!" aria-hidden="true"></span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/test-lab/extend-with-functions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Extend with Cloud Functions</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>REST API reference</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/test-lab/reference/testing/rest" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Testing (submit test & monitor)</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/test-lab/reference/toolresults/rest" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>ToolResults (retrieve results)</span></a></li></ul></devsite-expandable-nav></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>App Distribution</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/20201003051618/https://firebase.google.com/docs/app-distribution" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/app-distribution/manage-testers" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Manage testers</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/app-distribution/troubleshooting" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Troubleshooting</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>Set up for testers</span></div></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/app-distribution/ios/set-up-for-testing" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/app-distribution/android/set-up-for-testing" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</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>Distribute iOS apps</span></div></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/app-distribution/ios/distribute-console" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use the Firebase console</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/app-distribution/ios/distribute-cli" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use the Firebase CLI</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/app-distribution/ios/distribute-fastlane" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use fastlane</span></a></li><li class="devsite-nav-item devsite-nav-beta"><a href="/web/20201003051618/https://firebase.google.com/docs/app-distribution/set-up-alerts" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Set up in-app alerts</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>Distribute Android apps</span></div></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/app-distribution/android/distribute-console" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use the Firebase console</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/app-distribution/android/distribute-cli" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use the Firebase CLI</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/app-distribution/android/distribute-fastlane" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use fastlane</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/app-distribution/android/distribute-gradle" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use Gradle</span></a></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item devsite-nav-divider devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"><span class="devsite-nav-text" tooltip>Grow</span></div></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>Predictions</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/predictions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/predictions/get-started" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get started</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/predictions/predefined-predictions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Churn and spend predictions</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/predictions/bigquery-export" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Export prediction data to BigQuery</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>Use case examples</span></div></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/predictions/use-cases/prevent-churn" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Prevent churn</span></a></li><li class="devsite-nav-item devsite-nav-break"></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>Legacy Predictions (deprecated)</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/predictions/v1" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/predictions/v1/get-started" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Started</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>Use Cases</span></div></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/predictions/use-cases/prevent-churn" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Prevent Churn</span></a></li><li class="devsite-nav-item devsite-nav-break"></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/predictions/v1/explore-predictions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Explore Prediction Results</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/predictions/v1/bigquery-export" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Export Prediction Data to BigQuery</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/predictions/v1/predefined-predictions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Churn and Spend Predictions</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/predictions/v1/risk-profiles" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Risk Tolerance and Model Performance</span></a></li></ul></devsite-expandable-nav></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>A/B Testing</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/20201003051618/https://firebase.google.com/docs/ab-testing" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ab-testing/abtest-config" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Create Remote Config Experiments with A/B Testing</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ab-testing/abtest-with-console" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Create Messaging Experiments with A/B Testing</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ab-testing/abtest-inappmessaging" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Create In-App Messaging Experiments with A/B Testing</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ab-testing/video-series" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Video Series: Learn A/B Testing</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>Cloud Messaging</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/cloud-messaging" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/cloud-messaging/fcm-architecture" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>FCM Architectural Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/cloud-messaging/concept-options" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>About FCM messages</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>iOS</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/cloud-messaging/ios/client" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Set up an iOS client</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/cloud-messaging/ios/certs" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Configuring APNs with FCM</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/cloud-messaging/ios/first-message" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Send a test message</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/cloud-messaging/ios/send-multiple" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Send messages to multiple devices</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/cloud-messaging/ios/send-image" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Send an image in the notification payload</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/cloud-messaging/ios/receive" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Receive messages</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/cloud-messaging/ios/topic-messaging" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Send messages to topics</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/cloud-messaging/ios/device-group" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Send to device groups</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/cloud-messaging/ios/send-with-console" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Send messages with the Firebase Console</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>Android</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/cloud-messaging/android/client" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Set up an Android client</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/cloud-messaging/android/first-message" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Send a test message</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/cloud-messaging/android/send-multiple" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Send messages to multiple devices</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/cloud-messaging/android/send-image" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Send an image in the notification payload</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/cloud-messaging/android/receive" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Receive messages</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/cloud-messaging/android/topic-messaging" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Send messages to topics</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/cloud-messaging/android/device-group" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Send to device groups</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/cloud-messaging/android/upstream" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Send upstream messages</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/cloud-messaging/android/send-with-console" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Send messages with the Firebase Console</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>C++</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/cloud-messaging/cpp/client" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Set up a C++ client</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/cloud-messaging/cpp/receive" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Receive messages</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/cloud-messaging/cpp/topic-messaging" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Send messages to topics</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/cloud-messaging/cpp/device-group" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Send to device groups</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/cloud-messaging/cpp/upstream" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Send upstream messages</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/cloud-messaging/cpp/send-with-console" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Send messages with the Firebase Console</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>Unity</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/cloud-messaging/unity/client" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Set up a Unity client</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/cloud-messaging/unity/receive" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Receive messages</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/cloud-messaging/unity/topic-messaging" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Send messages to topics</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/cloud-messaging/unity/device-group" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Send to device groups</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/cloud-messaging/unity/upstream" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Send upstream messages</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/cloud-messaging/unity/send-with-console" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Send messages with the Firebase Console</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>Web (JavaScript)</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/cloud-messaging/js/client" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Set up a JavaScript client</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/cloud-messaging/js/first-message" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Send a test message</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/cloud-messaging/js/send-multiple" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Send messages to multiple devices</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/cloud-messaging/js/receive" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Receive messages</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/cloud-messaging/js/topic-messaging" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Send messages to topics</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/cloud-messaging/js/device-group" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Send to device groups</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/cloud-messaging/js/send-with-console" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Send messages with the Firebase Console</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/cloud-messaging/js/case-studies" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Case studies</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>Server environments</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/cloud-messaging/server" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Your server environment and FCM</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/cloud-messaging/migrate-v1" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Migrate to the HTTP v1 API</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/cloud-messaging/auth-server" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Authorize send requests</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/cloud-messaging/send-message" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Build send requests</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/cloud-messaging/receive-upstream" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Receive upstream messages</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/cloud-messaging/manage-topics" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Manage topics from the server</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/cloud-messaging/understand-delivery" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Understanding message delivery</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>In-App Messaging</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/20201003051618/https://firebase.google.com/docs/in-app-messaging" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/in-app-messaging/get-started" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get started</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/in-app-messaging/explore-use-cases" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Explore use cases</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/in-app-messaging/compose-campaign" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Compose a campaign</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/in-app-messaging/modify-message-behavior" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Modify message behavior</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/in-app-messaging/customize-messages" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Customize messages</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>Remote Config</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/remote-config" 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>What can I do with Remote Config?</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/remote-config/use-cases" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Remote Config use cases</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>Key concepts and strategies</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/remote-config/parameters" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Parameters and conditions</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/remote-config/templates" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Templates and versioning</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/remote-config/loading" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Config loading strategies</span></a></li><li class="devsite-nav-item devsite-nav-beta"><a href="/web/20201003051618/https://firebase.google.com/docs/remote-config/propagate-updates-realtime" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Propagate updates in real time</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/20201003051618/https://firebase.google.com/docs/remote-config/config-analytics" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Remote Config and Analytics</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>iOS</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/remote-config/use-config-ios" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get started with Remote Config on iOS</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>Android</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/remote-config/use-config-android" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get started with Remote Config on Android</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>Web (JavaScript)</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/remote-config/use-config-web" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get started with Remote Config on 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>C++</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/remote-config/use-config-cpp" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use Remote Config with C++</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>Unity</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/remote-config/use-config-unity" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use Remote Config with Unity</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/remote-config/automate-rc" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Modify Remote Config programmatically</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>API reference</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/reference/remote-config/rest" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>REST API reference</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/remote-config/condition-reference" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Conditional expression reference</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/reference/android/com/google/firebase/remoteconfig/package-summary" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android SDK reference</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/reference/swift/firebaseremoteconfig/api/reference/Classes" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS Swift SDK reference</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/reference/ios/firebasecore/api/reference/Classes" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS Obj-C SDK reference</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/reference/unity/namespace/firebase/remote-config" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Unity reference</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/reference/cpp/namespace/firebase/remote-config" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>C++ reference</span></a></li></ul></devsite-expandable-nav></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>Dynamic Links</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/dynamic-links" 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>Use Cases</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/dynamic-links/use-cases" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/dynamic-links/use-cases/web-to-app" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Convert Web Users To App Users</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/dynamic-links/use-cases/user-to-user" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Invite Users to Your App</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/dynamic-links/use-cases/rewarded-referral" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Reward User Referrals</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/dynamic-links/operating-system-integrations" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Operating System Integrations</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>Create Dynamic Links</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/dynamic-links/create-links" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/dynamic-links/ios/create" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/dynamic-links/android/create" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/dynamic-links/cpp/create" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>C++</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/dynamic-links/unity/create" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Unity</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/dynamic-links/rest" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>REST</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/dynamic-links/create-manually" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Manual URL Construction</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>Receive Dynamic Links</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/dynamic-links/ios/receive" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/dynamic-links/android/receive" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/dynamic-links/cpp/receive" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>C++</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/dynamic-links/unity/receive" 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/20201003051618/https://firebase.google.com/docs/dynamic-links/custom-domains" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use a Custom Domain</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/dynamic-links/analytics" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>View Analytics Data</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/dynamic-links/debug" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Debug Dynamic Links</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/dynamic-links/link-previews" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Link Previews & Social Metadata</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>Google AdMob</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/admob" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/admob/ios/quick-start" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get started for iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/admob/android/quick-start" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get started for Android</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/admob/analytics-and-firebase" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use Analytics and Firebase with AdMob apps</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>Use AdMob in a game</span></div></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>C++</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/admob/cpp/quick-start" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get started</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/admob/cpp/cocos2d-x" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Cocos2d-x</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/admob/cpp/rewarded-video" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Rewarded video</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>Unity</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item devsite-nav-external"><a href="//web.archive.org/web/20201003051618/https://developers.google.com/admob/unity/start" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get started</span><span class="devsite-nav-icon material-icons" data-icon="external" data-title="External" aria-hidden="true"></span></a></li></ul></devsite-expandable-nav></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>Google Ads</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/ads" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</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>App Indexing</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/app-indexing" 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>iOS</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/app-indexing/ios/app" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/app-indexing/ios/test" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Test Your Implementation</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/app-indexing/ios/measure" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Enhance Search Performance</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>Android</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/app-indexing/android/app" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Started</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/app-indexing/android/public-content" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Refine Public Content Indexing</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/app-indexing/android/log-actions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Log User Actions</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/app-indexing/android/test" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Test Your Implementation</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/app-indexing/android/measure" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Enhance Search Performance</span></a></li><li class="devsite-nav-item"><a href="/web/20201003051618/https://firebase.google.com/docs/app-indexing/android/migrate" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Migrate to the Latest API</span></a></li></ul></devsite-expandable-nav></li></ul></devsite-expandable-nav></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"> <article class="devsite-article-inner"><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; } .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:not(.devsite-banner-tenant) { background: #202124; color: white; font-weight: 500; } .devsite-banner-announcement a { color: white; 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> Google is committed to advancing racial equity for Black communities. <a href="https://web.archive.org/web/20201003051618/https://google.com/racialequity" class="gc-analytics-event" data-category="Announcement" data-label="Racial Equity">See how.</a> </div> </div> </div> <div class="devsite-article-meta"> <ul class="devsite-breadcrumb-list" role="navigation" aria-label="Breadcrumb"> <li class="devsite-breadcrumb-item "> <a href="/web/20201003051618/https://firebase.google.com/" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="1"> Firebase </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="/web/20201003051618/https://firebase.google.com/docs" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="2"> Docs </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="/web/20201003051618/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"> Guides </a> </li> </ul> <devsite-page-rating position="header" selected-rating="0" hover-rating-star="0"> </devsite-page-rating> </div> <devsite-feedback position="header" project-name="Firebase" product-id="719752" bucket="" context="" version="t-devsite-webserver-20200924-r01-rc00.429872899142986475" 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/"> <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 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 Platform 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'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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/https://firebase.google.com/docs/remote-config/automate-rc">Firebase Remote Config</a> </td> <td class="center compare-yes"></td> <td></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/20201003051618/https://firebase.google.com/docs/database/admin/start">Realtime Database</a>, <a href="/web/20201003051618/https://firebase.google.com/docs/cloud-messaging/admin">FCM</a>, <a href="/web/20201003051618/https://firebase.google.com/docs/auth/admin">Authentication</a>, and <a href="/web/20201003051618/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" tabindex="0">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.5+</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" tabindex="0">Set up a Firebase project and service account</h2> <p>To use the Firebase Admin SDK, you'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's credentials</li> </ul> <p>If you don't already have a Firebase project, you need to create one in the <a href="//web.archive.org/web/20201003051618/https://console.firebase.google.com/" class="link external gc-analytics-event" data-category="console" data-action="linkClick">Firebase console</a>. Visit <a href="/web/20201003051618/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/20201003051618/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 Platform (GCP) 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/20201003051618/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/20201003051618/https://firebase.google.com/docs/crashlytics">Firebase Crashlytics</a></li> <li><a href="/web/20201003051618/https://firebase.google.com/docs/predictions">Firebase Predictions</a></li> </ul> </td> <td> <ul> <li><a href="/web/20201003051618/https://firebase.google.com/docs/cloud-messaging">Firebase Cloud Messaging</a></li> <li><a href="/web/20201003051618/https://firebase.google.com/docs/in-app-messaging">Firebase In-App Messaging</a></li> </ul> </td> <td> <ul> <li><a href="/web/20201003051618/https://firebase.google.com/docs/remote-config">Firebase Remote Config</a></li> <li><a href="/web/20201003051618/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/20201003051618/https://support.google.com/analytics/answer/1009618?ref_topic=3544906&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/20201003051618/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/20201003051618/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 GCP 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" tabindex="0">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" tabindex="0">Node.js</h3><p>The Firebase Admin Node.js SDK is available on npm. If you don'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('firebase-admin'); </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 'firebase-admin'; </code></pre></section> <section><h3 id="java" data-text="Java" tabindex="0">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 'com.google.firebase:firebase-admin:7.0.0' } </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"><dependency> <groupId>com.google.firebase</groupId> <artifactId>firebase-admin</artifactId> <version>7.0.0</version> </dependency> </code></pre></section> <section><h3 id="python" data-text="Python" tabindex="0">Python</h3><p>The Firebase Admin Python SDK is available via <a href="//web.archive.org/web/20201003051618/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" tabindex="0">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#" tabindex="0">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 1.17.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 1.17.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"><ItemGroup> <PackageReference Include="FirebaseAdmin" Version="1.17.0" /> </ItemGroup> </code></pre></section> </div> <h2 id="initialize-sdk" data-text="Initialize the SDK" tabindex="0">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/20201003051618/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/20201003051618/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'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 > <a href="//web.archive.org/web/20201003051618/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" tabindex="0">Linux or macOS</h3><pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json" </code></pre></section> <section><h3 id="windows" data-text="Windows" tabindex="0">Windows</h3><p>With PowerShell:</p> <pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">$env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\service-account-file.json" </code></pre></section> </div> <p>After you'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" tabindex="0">Node.js</h3><pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">admin.initializeApp({ credential: admin.credential.applicationDefault(), databaseURL: 'https://<DATABASE_NAME>.firebaseio.com' }); </code></pre></section> <section><h3 id="java_1" data-text="Java" tabindex="0">Java</h3><pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">FirebaseOptions options = FirebaseOptions.builder() .setCredentials(GoogleCredentials.getApplicationDefault()) .setDatabaseUrl("https://<DATABASE_NAME>.firebaseio.com/") .build(); FirebaseApp.initializeApp(options); </code></pre></section> <section><h3 id="python_1" data-text="Python" tabindex="0">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" tabindex="0">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("error initializing app: %v\n", err) }<div class="devsite-github-link nocode no-select"><a target="_top" href="https://web.archive.org/web/20201003051618/https://github.com/firebase/firebase-admin-go/blob/cef91acd46f2fc5d0b3408d8154a0005db5bdb0b/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#" tabindex="0">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> <h3 id="use-oauth-2-0-refresh-token" data-text="Using an OAuth 2.0 refresh token" tabindex="0">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/20201003051618/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" tabindex="0">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: 'https://<DATABASE_NAME>.firebaseio.com' }); </code></pre></section> <section><h3 id="java_2" data-text="Java" tabindex="0">Java</h3><pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">FileInputStream refreshToken = new FileInputStream("path/to/refreshToken.json"); FirebaseOptions options = FirebaseOptions.builder() .setCredentials(GoogleCredentials.fromStream(refreshToken)) .setDatabaseUrl("https://<DATABASE_NAME>.firebaseio.com/") .build(); FirebaseApp.initializeApp(options); </code></pre></section> <section><h3 id="python_2" data-text="Python" tabindex="0">Python</h3><pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">cred = credentials.RefreshToken('path/to/refreshToken.json') default_app = firebase_admin.initialize_app(cred) </code></pre></section> <section><h3 id="go_2" data-text="Go" tabindex="0">Go</h3><pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">opt := option.WithCredentialsFile("path/to/refreshToken.json") config := &firebase.Config{ProjectID: "my-project-id"} app, err := firebase.NewApp(context.Background(), config, opt) if err != nil { log.Fatalf("error initializing app: %v\n", err) }<div class="devsite-github-link nocode no-select"><a target="_top" href="https://web.archive.org/web/20201003051618/https://github.com/firebase/firebase-admin-go/blob/cef91acd46f2fc5d0b3408d8154a0005db5bdb0b/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#" tabindex="0">C#</h3><pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">FirebaseApp.Create(new AppOptions() { Credential = GoogleCredential.FromFile("path/to/refreshToken.json"), }); </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" tabindex="0">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/20201003051618/https://developers.google.com/identity/protocols/application-default-credentials">Google Application Default Credentials</a> and reads options from 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 name 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/20201003051618/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" tabindex="0">Node.js</h3><pre class="prettyprint" translate="no" dir="ltr"><code translate="no" dir="ltr">// Initialize the default app var admin = require('firebase-admin'); var app = admin.initializeApp(); </code></pre></section> <section><h3 id="java_3" data-text="Java" tabindex="0">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" tabindex="0">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" tabindex="0">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("error initializing app: %v\n", err) }<div class="devsite-github-link nocode no-select"><a target="_top" href="https://web.archive.org/web/20201003051618/https://github.com/firebase/firebase-admin-go/blob/cef91acd46f2fc5d0b3408d8154a0005db5bdb0b/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#" tabindex="0">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/20201003051618/https://firebase.google.com/docs/auth/admin">Implement custom authentication</a></li> <li><a href="/web/20201003051618/https://firebase.google.com/docs/auth/admin/manage-users">Manage your Firebase Authentication users</a></li> <li><a href="/web/20201003051618/https://firebase.google.com/docs/database/admin/start">Read and write data from the Realtime Database</a></li> <li><a href="/web/20201003051618/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" tabindex="0">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" tabindex="0">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); // '[DEFAULT]' // 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" tabindex="0">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()); // "[DEFAULT]" // 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" tabindex="0">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) # "[DEFAULT]" # Retrieve services via the auth package... # auth.create_custom_token(...) </code></pre></section> <section><h3 id="go_4" data-text="Go" tabindex="0">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("error initializing app: %v\n", err) } // Access auth service from the default app client, err := app.Auth(context.Background()) if err != nil { log.Fatalf("error getting Auth client: %v\n", err) }<div class="devsite-github-link nocode no-select"><a target="_top" href="https://web.archive.org/web/20201003051618/https://github.com/firebase/firebase-admin-go/blob/cef91acd46f2fc5d0b3408d8154a0005db5bdb0b/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#" tabindex="0">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); // "[DEFAULT]" // 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" tabindex="0">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, 'other'); console.log(admin.app().name); // '[DEFAULT]' console.log(otherApp.name); // 'other' // Use the shorthand notation to retrieve the default app's services var defaultAuth = admin.auth(); var defaultDatabase = admin.database(); // Use the otherApp variable to retrieve the other app's services var otherAuth = otherApp.auth(); var otherDatabase = otherApp.database(); </code></pre></section> <section><h3 id="java_5" data-text="Java" tabindex="0">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, "other"); System.out.println(defaultApp.getName()); // "[DEFAULT]" System.out.println(otherApp.getName()); // "other" // Use the shorthand notation to retrieve the default app's services FirebaseAuth defaultAuth = FirebaseAuth.getInstance(); FirebaseDatabase defaultDatabase = FirebaseDatabase.getInstance(); // Use the otherApp variable to retrieve the other app's services FirebaseAuth otherAuth = FirebaseAuth.getInstance(otherApp); FirebaseDatabase otherDatabase = FirebaseDatabase.getInstance(otherApp); </code></pre></section> <section><h3 id="python_5" data-text="Python" tabindex="0">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='other') print(default_app.name) # "[DEFAULT]" print(other_app.name) # "other" # Retrieve default services via the auth package... # auth.create_custom_token(...) # Use the `app` argument to retrieve the other app's services # auth.create_custom_token(..., app=other_app) </code></pre></section> <section><h3 id="go_5" data-text="Go" tabindex="0">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("error initializing app: %v\n", err) } // Initialize another app with a different config opt := option.WithCredentialsFile("service-account-other.json") otherApp, err := firebase.NewApp(context.Background(), nil, opt) if err != nil { log.Fatalf("error initializing app: %v\n", err) } // Access Auth service from default app defaultClient, err := defaultApp.Auth(context.Background()) if err != nil { log.Fatalf("error getting Auth client: %v\n", err) } // Access auth service from other app otherClient, err := otherApp.Auth(context.Background()) if err != nil { log.Fatalf("error getting Auth client: %v\n", err) }<div class="devsite-github-link nocode no-select"><a target="_top" href="https://web.archive.org/web/20201003051618/https://github.com/firebase/firebase-admin-go/blob/cef91acd46f2fc5d0b3408d8154a0005db5bdb0b/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#" tabindex="0">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, "other"); Console.WriteLine(defaultApp.Name); // "[DEFAULT]" Console.WriteLine(otherApp.Name); // "other" // Use the shorthand notation to retrieve the default app's services var defaultAuth = FirebaseAuth.DefaultInstance; // Use the otherApp variable to retrieve the other app'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" tabindex="0">Set scopes for Realtime Database and Authentication</h2> <p>If you'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/20201003051618/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/20201003051618/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" tabindex="0">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: "serviceAccounts": [ { "email": "your.gserviceaccount.com", "scopes": [ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/userinfo.email" ] } ], # 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 "your.gserviceaccount.com" --scopes "https://www.googleapis.com/auth/firebase.database,https://www.googleapis.com/auth/userinfo.email" </code></pre></section> </div> <h2 id="next_steps" data-text="Next steps" tabindex="0">Next steps</h2> <p>Learn about Firebase:</p> <ul> <li><p>Explore <a href="/web/20201003051618/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/20201003051618/https://github.com/firebase/firebase-admin-node">Node.js</a>, <a href="//web.archive.org/web/20201003051618/https://github.com/firebase/firebase-admin-java">Java</a>, and <a href="//web.archive.org/web/20201003051618/https://github.com/firebase/firebase-admin-python">Python</a>.</p></li> <li><p>Read <a href="https://web.archive.org/web/20201003051618/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/20201003051618/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/20201003051618/https://firebase.google.com/docs/functions">Cloud Functions</a>.</li> <li>Store info with <a href="/web/20201003051618/https://firebase.google.com/docs/database">Realtime Database</a> or blob data with <a href="/web/20201003051618/https://firebase.google.com/docs/storage">Cloud Storage</a>.</li> <li>Receive notifications with <a href="/web/20201003051618/https://firebase.google.com/docs/cloud-messaging">Cloud Messaging</a>.</li> </ul> </div> <devsite-page-rating position="footer" selected-rating="0" hover-rating-star="0"> </devsite-page-rating> <devsite-feedback position="footer" project-name="Firebase" product-id="719752" bucket="" context="" version="t-devsite-webserver-20200924-r01-rc00.429872899142986475" 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/"> <button> Send feedback </button> </devsite-feedback> </article> </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/20201003051618/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/20201003051618/https://www.apache.org/licenses/LICENSE-2.0">Apache 2.0 License</a>. For details, see the <a href="https://web.archive.org/web/20201003051618/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 2020-09-30 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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618im_/https://www.gstatic.com/devrel-devsite/prod/v85e39fe21f53c758adf6c791fb94a7a2182cff2705b3dc8ed7c59fc745471159/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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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/20201003051618/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"> עברית' </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> <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"}, "tags": ["GTM-N84485"]}</script> </devsite-analytics> <firebase-gtm></firebase-gtm> <script> (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/20201003051618/https://www.gstatic.com/devrel-devsite/prod/v85e39fe21f53c758adf6c791fb94a7a2182cff2705b3dc8ed7c59fc745471159/firebase/js/app_loader.js', '[4,"en",null,"/js/devsite_app_module.js","https://web.archive.org/web/20201003051618/https://www.gstatic.com/devrel-devsite/prod/v85e39fe21f53c758adf6c791fb94a7a2182cff2705b3dc8ed7c59fc745471159","https://web.archive.org/web/20201003051618/https://www.gstatic.com/devrel-devsite/prod/v85e39fe21f53c758adf6c791fb94a7a2182cff2705b3dc8ed7c59fc745471159/firebase","https://web.archive.org/web/20201003051618/https://firebase-dot-devsite-v2-prod.appspot.com",null,null,["/_pwa/firebase/manifest.json","/_static/images/video-placeholder.svg","https://web.archive.org/web/20201003051618/https://www.gstatic.com/devrel-devsite/prod/v85e39fe21f53c758adf6c791fb94a7a2182cff2705b3dc8ed7c59fc745471159/firebase/images/favicon.png","https://web.archive.org/web/20201003051618/https://www.gstatic.com/devrel-devsite/prod/v85e39fe21f53c758adf6c791fb94a7a2182cff2705b3dc8ed7c59fc745471159/firebase/images/lockup.png","https://web.archive.org/web/20201003051618/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]') </script> </body> </html><!-- FILE ARCHIVED ON 05:16:18 Oct 03, 2020 AND RETRIEVED FROM THE INTERNET ARCHIVE ON 19:28:58 Dec 12, 2024. 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.776 exclusion.robots: 0.037 exclusion.robots.policy: 0.021 esindex: 0.014 cdx.remote: 158.381 LoadShardBlock: 157.848 (3) PetaboxLoader3.datanode: 121.937 (4) PetaboxLoader3.resolve: 224.886 (2) load_resource: 213.686 -->