CINXE.COM

Federated Credential Management API overview  |  Privacy Sandbox  |  Google for Developers

<!doctype html> <html lang="en" dir="ltr"> <head> <meta name="google-signin-client-id" content="721724668570-nbkv1cfusk7kk4eni4pjvepaus73b13t.apps.googleusercontent.com"> <meta name="google-signin-scope" content="profile email https://www.googleapis.com/auth/developerprofiles https://www.googleapis.com/auth/developerprofiles.award"> <meta property="og:site_name" content="Google for Developers"> <meta property="og:type" content="website"><meta name="theme-color" content="#fff"><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="/_pwa/developers/manifest.json" crossorigin="use-credentials"> <link rel="preconnect" href="//www.gstatic.com" crossorigin> <link rel="preconnect" href="//fonts.gstatic.com" crossorigin> <link rel="preconnect" href="//fonts.googleapis.com" crossorigin> <link rel="preconnect" href="//apis.google.com" crossorigin> <link rel="preconnect" href="//www.google-analytics.com" crossorigin><link rel="stylesheet" href="//fonts.googleapis.com/css?family=Google+Sans:400,500|Roboto:400,400italic,500,500italic,700,700italic|Roboto+Mono:400,500,700&display=swap"> <link rel="stylesheet" href="//fonts.googleapis.com/css2?family=Material+Icons&family=Material+Symbols+Outlined&display=block"><link rel="stylesheet" href="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers/css/app.css"> <link rel="shortcut icon" href="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers/images/favicon-new.png"> <link rel="apple-touch-icon" href="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers/images/touchicon-180-new.png"><link rel="canonical" href="https://developers.google.com/privacy-sandbox/cookies/fedcm"><link rel="search" type="application/opensearchdescription+xml" title="Google for Developers" href="https://developers.google.com/s/opensearch.xml"> <link rel="alternate" hreflang="en" href="https://developers.google.com/privacy-sandbox/cookies/fedcm" /><link rel="alternate" hreflang="x-default" href="https://developers.google.com/privacy-sandbox/cookies/fedcm" /><link rel="alternate" hreflang="ar" href="https://developers.google.com/privacy-sandbox/cookies/fedcm?hl=ar" /><link rel="alternate" hreflang="bn" href="https://developers.google.com/privacy-sandbox/cookies/fedcm?hl=bn" /><link rel="alternate" hreflang="zh-Hans" href="https://developers.google.com/privacy-sandbox/cookies/fedcm?hl=zh-cn" /><link rel="alternate" hreflang="zh-Hant" href="https://developers.google.com/privacy-sandbox/cookies/fedcm?hl=zh-tw" /><link rel="alternate" hreflang="fa" href="https://developers.google.com/privacy-sandbox/cookies/fedcm?hl=fa" /><link rel="alternate" hreflang="fr" href="https://developers.google.com/privacy-sandbox/cookies/fedcm?hl=fr" /><link rel="alternate" hreflang="de" href="https://developers.google.com/privacy-sandbox/cookies/fedcm?hl=de" /><link rel="alternate" hreflang="he" href="https://developers.google.com/privacy-sandbox/cookies/fedcm?hl=he" /><link rel="alternate" hreflang="hi" href="https://developers.google.com/privacy-sandbox/cookies/fedcm?hl=hi" /><link rel="alternate" hreflang="id" href="https://developers.google.com/privacy-sandbox/cookies/fedcm?hl=id" /><link rel="alternate" hreflang="it" href="https://developers.google.com/privacy-sandbox/cookies/fedcm?hl=it" /><link rel="alternate" hreflang="ja" href="https://developers.google.com/privacy-sandbox/cookies/fedcm?hl=ja" /><link rel="alternate" hreflang="ko" href="https://developers.google.com/privacy-sandbox/cookies/fedcm?hl=ko" /><link rel="alternate" hreflang="pl" href="https://developers.google.com/privacy-sandbox/cookies/fedcm?hl=pl" /><link rel="alternate" hreflang="pt-BR" href="https://developers.google.com/privacy-sandbox/cookies/fedcm?hl=pt-br" /><link rel="alternate" hreflang="ru" href="https://developers.google.com/privacy-sandbox/cookies/fedcm?hl=ru" /><link rel="alternate" hreflang="es-419" href="https://developers.google.com/privacy-sandbox/cookies/fedcm?hl=es-419" /><link rel="alternate" hreflang="th" href="https://developers.google.com/privacy-sandbox/cookies/fedcm?hl=th" /><link rel="alternate" hreflang="tr" href="https://developers.google.com/privacy-sandbox/cookies/fedcm?hl=tr" /><link rel="alternate" hreflang="vi" href="https://developers.google.com/privacy-sandbox/cookies/fedcm?hl=vi" /><title>Federated Credential Management API overview &nbsp;|&nbsp; Privacy Sandbox &nbsp;|&nbsp; Google for Developers</title> <meta property="og:title" content="Federated Credential Management API overview &nbsp;|&nbsp; Privacy Sandbox &nbsp;|&nbsp; Google for Developers"><meta name="description" content="A web platform API that allows users to login to websites with their federated accounts in a manner compatible with improvements to browser privacy."> <meta property="og:description" content="A web platform API that allows users to login to websites with their federated accounts in a manner compatible with improvements to browser privacy."><meta property="og:url" content="https://developers.google.com/privacy-sandbox/cookies/fedcm"><meta property="og:image" content="https://developers.google.com/static/privacy-sandbox/assets/images/privacy-sandbox-for-developers.png"> <meta property="og:image:width" content="1600"> <meta property="og:image:height" content="900"><meta property="og:locale" content="en"><meta name="twitter:card" content="summary_large_image"><script type="application/ld+json"> { "@context": "https://schema.org", "@type": "Article", "dateModified": "2024-05-27", "headline": "Federated Credential Management API overview" } </script><script type="application/ld+json"> { "@context": "https://schema.org", "@type": "BreadcrumbList", "itemListElement": [{ "@type": "ListItem", "position": 1, "name": "Privacy Sandbox", "item": "https://developers.google.com/privacy-sandbox" },{ "@type": "ListItem", "position": 2, "name": "Federated Credential Management API overview", "item": "https://developers.google.com/privacy-sandbox/cookies/fedcm" }] } </script> <link rel="stylesheet" href="/extras.css"></head> <body class="" template="page" theme="white" type="article" layout="docs" concierge='closed' display-toc pending> <devsite-progress type="indeterminate" id="app-progress"></devsite-progress> <section class="devsite-wrapper"> <devsite-cookie-notification-bar></devsite-cookie-notification-bar><devsite-header role="banner"> <div class="devsite-header--inner nocontent"> <div class="devsite-top-logo-row-wrapper-wrapper"> <div class="devsite-top-logo-row-wrapper"> <div class="devsite-top-logo-row"> <button type="button" id="devsite-hamburger-menu" class="devsite-header-icon-button button-flat material-icons gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Navigation menu button" visually-hidden aria-label="Open menu"> </button> <div class="devsite-product-name-wrapper"> <a href="https://developers.google.com/privacy-sandbox"> <div class="devsite-product-logo-container" size="medium" > <picture> <img class="devsite-product-logo" alt="Privacy Sandbox" src="https://developers.google.com/static/privacy-sandbox/assets/images/privacy-sandbox-logo.png" srcset="https://developers.google.com/static/privacy-sandbox/assets/images/privacy-sandbox-logo_36.png 36w, https://developers.google.com/static/privacy-sandbox/assets/images/privacy-sandbox-logo_48.png 48w, https://developers.google.com/static/privacy-sandbox/assets/images/privacy-sandbox-logo_72.png 72w, https://developers.google.com/static/privacy-sandbox/assets/images/privacy-sandbox-logo_96.png 96w, https://developers.google.com/static/privacy-sandbox/assets/images/privacy-sandbox-logo_480.png 480w, https://developers.google.com/static/privacy-sandbox/assets/images/privacy-sandbox-logo_720.png 720w, https://developers.google.com/static/privacy-sandbox/assets/images/privacy-sandbox-logo_856.png 856w, https://developers.google.com/static/privacy-sandbox/assets/images/privacy-sandbox-logo_960.png 960w, https://developers.google.com/static/privacy-sandbox/assets/images/privacy-sandbox-logo_1440.png 1440w, https://developers.google.com/static/privacy-sandbox/assets/images/privacy-sandbox-logo_1920.png 1920w, https://developers.google.com/static/privacy-sandbox/assets/images/privacy-sandbox-logo_2880.png 2880w" sizes="64px" loading="lazy" > </picture> </div> </a> <span class="devsite-product-name"> <ul class="devsite-breadcrumb-list" > <li class="devsite-breadcrumb-item "> <a href="https://developers.google.com/privacy-sandbox" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Upper Header" data-value="1" track-type="globalNav" track-name="breadcrumb" track-metadata-position="1" track-metadata-eventdetail="Privacy Sandbox" > Privacy Sandbox </a> </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="https://developers.google.com/privacy-sandbox" track-metadata-eventdetail="https://developers.google.com/privacy-sandbox" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - overview" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Overview" track-name="overview" > Overview </a> </tab> <tab class="devsite-active"> <a href="https://developers.google.com/privacy-sandbox/cookies" track-metadata-eventdetail="https://developers.google.com/privacy-sandbox/cookies" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - cookies" track-metadata-module="primary nav" aria-label="Cookies, selected" data-category="Site-Wide Custom Events" data-label="Tab: Cookies" track-name="cookies" > Cookies </a> </tab> <tab > <a href="https://developers.google.com/privacy-sandbox/private-advertising" track-metadata-eventdetail="https://developers.google.com/privacy-sandbox/private-advertising" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - private advertising" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Private advertising" track-name="private advertising" > Private advertising </a> </tab> <tab > <a href="https://developers.google.com/privacy-sandbox/protections" track-metadata-eventdetail="https://developers.google.com/privacy-sandbox/protections" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - privacy protections" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Privacy protections" track-name="privacy protections" > Privacy protections </a> </tab> <tab > <a href="https://developers.google.com/privacy-sandbox/learn" track-metadata-eventdetail="https://developers.google.com/privacy-sandbox/learn" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - learn" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Learn" track-name="learn" > Learn </a> </tab> <tab > <a href="https://developers.google.com/privacy-sandbox/blog" track-metadata-eventdetail="https://developers.google.com/privacy-sandbox/blog" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - blog" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Blog" track-name="blog" > Blog </a> </tab> </nav> </devsite-tabs> </div> <devsite-search enable-signin enable-search enable-suggestions enable-query-completion project-name="Privacy Sandbox" tenant-name="Google for Developers" project-scope="/privacy-sandbox" url-scoped="https://developers.google.com/s/results/privacy-sandbox" > <form class="devsite-search-form" action="https://developers.google.com/s/results" method="GET"> <div class="devsite-search-container"> <button type="button" search-open class="devsite-search-button devsite-header-icon-button button-flat material-icons" aria-label="Open search"></button> <div class="devsite-searchbox"> <input aria-activedescendant="" aria-autocomplete="list" aria-label="Search" aria-expanded="false" aria-haspopup="listbox" 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 class="devsite-search-shortcut-icon-container" aria-hidden="true"> <kbd class="devsite-search-shortcut-icon">/</kbd> </div> </div> </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> <ul role="presentation"> <li role="presentation"> <a role="menuitem" lang="en" >English</a> </li> <li role="presentation"> <a role="menuitem" lang="de" >Deutsch</a> </li> <li role="presentation"> <a role="menuitem" lang="es" >Español</a> </li> <li role="presentation"> <a role="menuitem" lang="es_419" >Español – América Latina</a> </li> <li role="presentation"> <a role="menuitem" lang="fr" >Français</a> </li> <li role="presentation"> <a role="menuitem" lang="id" >Indonesia</a> </li> <li role="presentation"> <a role="menuitem" lang="it" >Italiano</a> </li> <li role="presentation"> <a role="menuitem" lang="pl" >Polski</a> </li> <li role="presentation"> <a role="menuitem" lang="pt_br" >Português – Brasil</a> </li> <li role="presentation"> <a role="menuitem" lang="vi" >Tiếng Việt</a> </li> <li role="presentation"> <a role="menuitem" lang="tr" >Türkçe</a> </li> <li role="presentation"> <a role="menuitem" lang="ru" >Русский</a> </li> <li role="presentation"> <a role="menuitem" lang="he" >עברית</a> </li> <li role="presentation"> <a role="menuitem" lang="ar" >العربيّة</a> </li> <li role="presentation"> <a role="menuitem" lang="fa" >فارسی</a> </li> <li role="presentation"> <a role="menuitem" lang="hi" >हिंदी</a> </li> <li role="presentation"> <a role="menuitem" lang="bn" >বাংলা</a> </li> <li role="presentation"> <a role="menuitem" lang="th" >ภาษาไทย</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_cn" >中文 – 简体</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_tw" >中文 – 繁體</a> </li> <li role="presentation"> <a role="menuitem" lang="ja" >日本語</a> </li> <li role="presentation"> <a role="menuitem" lang="ko" >한국어</a> </li> </ul> </devsite-language-selector> <a class="devsite-header-link devsite-top-button button gc-analytics-event" href="//privacysandbox.com/" data-category="Site-Wide Custom Events" data-label="Site header link" > Home </a> <devsite-user enable-profiles fp-auth id="devsite-user"> <span class="button devsite-top-button" aria-hidden="true" visually-hidden>Sign in</span> </devsite-user> </div> </div> </div> <div class="devsite-collapsible-section devsite-header-no-lower-tabs "> <div class="devsite-header-background"> <div class="devsite-product-id-row" > <div class="devsite-product-description-row"> <ul class="devsite-breadcrumb-list" > <li class="devsite-breadcrumb-item "> <a href="https://developers.google.com/privacy-sandbox/cookies" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Lower Header" data-value="1" track-type="globalNav" track-name="breadcrumb" track-metadata-position="1" track-metadata-eventdetail="" > Cookies </a> </li> </ul> </div> </div> </div> </div> </div> </devsite-header> <devsite-book-nav scrollbars > <div class="devsite-book-nav-filter" > <span class="filter-list-icon material-icons" aria-hidden="true"></span> <input type="text" placeholder="Filter" aria-label="Type to filter" role="searchbox"> <span class="filter-clear-button hidden" data-title="Clear filter" aria-label="Clear filter" role="button" tabindex="0"></span> </div> <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="https://developers.google.com/privacy-sandbox"> <div class="devsite-product-logo-container" size="medium" > <picture> <img class="devsite-product-logo" alt="Privacy Sandbox" src="https://developers.google.com/static/privacy-sandbox/assets/images/privacy-sandbox-logo.png" srcset="https://developers.google.com/static/privacy-sandbox/assets/images/privacy-sandbox-logo_36.png 36w, https://developers.google.com/static/privacy-sandbox/assets/images/privacy-sandbox-logo_48.png 48w, https://developers.google.com/static/privacy-sandbox/assets/images/privacy-sandbox-logo_72.png 72w, https://developers.google.com/static/privacy-sandbox/assets/images/privacy-sandbox-logo_96.png 96w, https://developers.google.com/static/privacy-sandbox/assets/images/privacy-sandbox-logo_480.png 480w, https://developers.google.com/static/privacy-sandbox/assets/images/privacy-sandbox-logo_720.png 720w, https://developers.google.com/static/privacy-sandbox/assets/images/privacy-sandbox-logo_856.png 856w, https://developers.google.com/static/privacy-sandbox/assets/images/privacy-sandbox-logo_960.png 960w, https://developers.google.com/static/privacy-sandbox/assets/images/privacy-sandbox-logo_1440.png 1440w, https://developers.google.com/static/privacy-sandbox/assets/images/privacy-sandbox-logo_1920.png 1920w, https://developers.google.com/static/privacy-sandbox/assets/images/privacy-sandbox-logo_2880.png 2880w" sizes="64px" loading="lazy" > </picture> </div> </a> <span class="devsite-product-name"> <ul class="devsite-breadcrumb-list" > <li class="devsite-breadcrumb-item "> <a href="https://developers.google.com/privacy-sandbox" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Upper Header" data-value="1" track-type="globalNav" track-name="breadcrumb" track-metadata-position="1" track-metadata-eventdetail="Privacy Sandbox" > Privacy Sandbox </a> </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="/privacy-sandbox" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Tab: Overview" track-name="overview" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Overview" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Overview </span> <span class="devsite-nav-icon material-icons" data-icon="forward" > </span> </a> </li> <li class="devsite-nav-item"> <a href="/privacy-sandbox/cookies" class="devsite-nav-title gc-analytics-event devsite-nav-has-children devsite-nav-active" data-category="Site-Wide Custom Events" data-label="Tab: Cookies" track-name="cookies" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Cookies" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Cookies </span> <span class="devsite-nav-icon material-icons" data-icon="forward" > </span> </a> </li> <li class="devsite-nav-item"> <a href="/privacy-sandbox/private-advertising" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Tab: Private advertising" track-name="private advertising" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Private advertising" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Private advertising </span> <span class="devsite-nav-icon material-icons" data-icon="forward" > </span> </a> </li> <li class="devsite-nav-item"> <a href="/privacy-sandbox/protections" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Tab: Privacy protections" track-name="privacy protections" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Privacy protections" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Privacy protections </span> <span class="devsite-nav-icon material-icons" data-icon="forward" > </span> </a> </li> <li class="devsite-nav-item"> <a href="/privacy-sandbox/learn" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Learn" track-name="learn" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Learn" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Learn </span> </a> </li> <li class="devsite-nav-item"> <a href="/privacy-sandbox/blog" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Blog" track-name="blog" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Blog" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Blog </span> </a> </li> <li class="devsite-nav-item"> <a href="//privacysandbox.com/" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Home" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Home </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="/privacy-sandbox/cookies" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /privacy-sandbox/cookies" track-type="bookNav" track-name="click" track-metadata-eventdetail="/privacy-sandbox/cookies" ><span class="devsite-nav-text" tooltip>About third-party cookies</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>Prepare for changes</span> </div></li> <li class="devsite-nav-item"><a href="/privacy-sandbox/cookies/prepare/overview" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /privacy-sandbox/cookies/prepare/overview" track-type="bookNav" track-name="click" track-metadata-eventdetail="/privacy-sandbox/cookies/prepare/overview" ><span class="devsite-nav-text" tooltip>Overview</span></a></li> <li class="devsite-nav-item"><a href="/privacy-sandbox/cookies/prepare/audit-cookies" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /privacy-sandbox/cookies/prepare/audit-cookies" track-type="bookNav" track-name="click" track-metadata-eventdetail="/privacy-sandbox/cookies/prepare/audit-cookies" ><span class="devsite-nav-text" tooltip>Audit cookies</span></a></li> <li class="devsite-nav-item"><a href="/privacy-sandbox/cookies/prepare/test-for-breakage" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /privacy-sandbox/cookies/prepare/test-for-breakage" track-type="bookNav" track-name="click" track-metadata-eventdetail="/privacy-sandbox/cookies/prepare/test-for-breakage" ><span class="devsite-nav-text" tooltip>Test for breakage</span></a></li> <li class="devsite-nav-item"><a href="/privacy-sandbox/cookies/prepare/debug" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /privacy-sandbox/cookies/prepare/debug" track-type="bookNav" track-name="click" track-metadata-eventdetail="/privacy-sandbox/cookies/prepare/debug" ><span class="devsite-nav-text" tooltip>Debug third-party cookie blocking</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>Solutions</span> </div></li> <li class="devsite-nav-item"><a href="/privacy-sandbox/cookies/chips" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /privacy-sandbox/cookies/chips" track-type="bookNav" track-name="click" track-metadata-eventdetail="/privacy-sandbox/cookies/chips" ><span class="devsite-nav-text" tooltip>CHIPS</span></a></li> <li class="devsite-nav-item"><a href="/privacy-sandbox/cookies/chips-transition" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /privacy-sandbox/cookies/chips-transition" track-type="bookNav" track-name="click" track-metadata-eventdetail="/privacy-sandbox/cookies/chips-transition" ><span class="devsite-nav-text" tooltip>Transition to partitioned cookies</span></a></li> <li class="devsite-nav-item"><a href="/privacy-sandbox/cookies/storage-access-api" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /privacy-sandbox/cookies/storage-access-api" track-type="bookNav" track-name="click" track-metadata-eventdetail="/privacy-sandbox/cookies/storage-access-api" ><span class="devsite-nav-text" tooltip>Storage Access API</span></a></li> <li class="devsite-nav-item"><a href="/privacy-sandbox/cookies/related-website-sets" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /privacy-sandbox/cookies/related-website-sets" track-type="bookNav" track-name="click" track-metadata-eventdetail="/privacy-sandbox/cookies/related-website-sets" ><span class="devsite-nav-text" tooltip>Related Website Sets</span></a></li> <li class="devsite-nav-item"><a href="/privacy-sandbox/cookies/related-website-sets-integration" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /privacy-sandbox/cookies/related-website-sets-integration" track-type="bookNav" track-name="click" track-metadata-eventdetail="/privacy-sandbox/cookies/related-website-sets-integration" ><span class="devsite-nav-text" tooltip>Related Website Sets Developer guide</span></a></li> <li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <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>Federated Credential Management API</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/privacy-sandbox/cookies/fedcm" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /privacy-sandbox/cookies/fedcm" track-type="bookNav" track-name="click" track-metadata-eventdetail="/privacy-sandbox/cookies/fedcm" ><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/privacy-sandbox/cookies/fedcm-developer-guide" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /privacy-sandbox/cookies/fedcm-developer-guide" track-type="bookNav" track-name="click" track-metadata-eventdetail="/privacy-sandbox/cookies/fedcm-developer-guide" ><span class="devsite-nav-text" tooltip>Developer guide</span></a></li><li class="devsite-nav-item"><a href="/privacy-sandbox/cookies/fedcm-updates" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /privacy-sandbox/cookies/fedcm-updates" track-type="bookNav" track-name="click" track-metadata-eventdetail="/privacy-sandbox/cookies/fedcm-updates" ><span class="devsite-nav-text" tooltip>Updates</span></a></li><li class="devsite-nav-item"><a href="/privacy-sandbox/learn?api=federatedcredentialmanagement" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /privacy-sandbox/learn?api=federatedcredentialmanagement" track-type="bookNav" track-name="click" track-metadata-eventdetail="/privacy-sandbox/learn?api=federatedcredentialmanagement" ><span class="devsite-nav-text" tooltip>Tagged docs and blog posts</span></a></li></ul></div></li> <li class="devsite-nav-item"><a href="/privacy-sandbox/cookies/storage-partitioning" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /privacy-sandbox/cookies/storage-partitioning" track-type="bookNav" track-name="click" track-metadata-eventdetail="/privacy-sandbox/cookies/storage-partitioning" ><span class="devsite-nav-text" tooltip>Storage partitioning</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>Guides</span> </div></li> <li class="devsite-nav-item"><a href="/privacy-sandbox/cookies/guides" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /privacy-sandbox/cookies/guides" track-type="bookNav" track-name="click" track-metadata-eventdetail="/privacy-sandbox/cookies/guides" ><span class="devsite-nav-text" tooltip>Overview</span></a></li> <li class="devsite-nav-item"><a href="/privacy-sandbox/cookies/guides/identity" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /privacy-sandbox/cookies/guides/identity" track-type="bookNav" track-name="click" track-metadata-eventdetail="/privacy-sandbox/cookies/guides/identity" ><span class="devsite-nav-text" tooltip>Identity</span></a></li> <li class="devsite-nav-item"><a href="/privacy-sandbox/cookies/guides/embeds" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /privacy-sandbox/cookies/guides/embeds" track-type="bookNav" track-name="click" track-metadata-eventdetail="/privacy-sandbox/cookies/guides/embeds" ><span class="devsite-nav-text" tooltip>Embeds</span></a></li> <li class="devsite-nav-item"><a href="/privacy-sandbox/resources/case-studies/times-internet" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /privacy-sandbox/resources/case-studies/times-internet" track-type="bookNav" track-name="click" track-metadata-eventdetail="/privacy-sandbox/resources/case-studies/times-internet" ><span class="devsite-nav-text" tooltip>Case study: Times Internet</span></a></li> <li class="devsite-nav-item"><a href="/privacy-sandbox/resources/case-studies/mercado-libre" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /privacy-sandbox/resources/case-studies/mercado-libre" track-type="bookNav" track-name="click" track-metadata-eventdetail="/privacy-sandbox/resources/case-studies/mercado-libre" ><span class="devsite-nav-text" tooltip>Case study: Mercado Libre</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>Temporary exceptions</span> </div></li> <li class="devsite-nav-item"><a href="/privacy-sandbox/cookies/temporary-exceptions/preserving-critical-user-experiences" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /privacy-sandbox/cookies/temporary-exceptions/preserving-critical-user-experiences" track-type="bookNav" track-name="click" track-metadata-eventdetail="/privacy-sandbox/cookies/temporary-exceptions/preserving-critical-user-experiences" ><span class="devsite-nav-text" tooltip>Overview</span></a></li> <li class="devsite-nav-item"><a href="/privacy-sandbox/cookies/temporary-exceptions/grace-period" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /privacy-sandbox/cookies/temporary-exceptions/grace-period" track-type="bookNav" track-name="click" track-metadata-eventdetail="/privacy-sandbox/cookies/temporary-exceptions/grace-period" ><span class="devsite-nav-text" tooltip>Grace period</span></a></li> <li class="devsite-nav-item"><a href="/privacy-sandbox/cookies/temporary-exceptions/grace-period-opt-out" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /privacy-sandbox/cookies/temporary-exceptions/grace-period-opt-out" track-type="bookNav" track-name="click" track-metadata-eventdetail="/privacy-sandbox/cookies/temporary-exceptions/grace-period-opt-out" ><span class="devsite-nav-text" tooltip>Grace period opt out</span></a></li> <li class="devsite-nav-item"><a href="/privacy-sandbox/cookies/dashboard" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /privacy-sandbox/cookies/dashboard" track-type="bookNav" track-name="click" track-metadata-eventdetail="/privacy-sandbox/cookies/dashboard" ><span class="devsite-nav-text" tooltip>Compatibility lookup tool</span></a></li> <li class="devsite-nav-item"><a href="/privacy-sandbox/cookies/temporary-exceptions/storage-partitioning-deprecation-trial" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /privacy-sandbox/cookies/temporary-exceptions/storage-partitioning-deprecation-trial" track-type="bookNav" track-name="click" track-metadata-eventdetail="/privacy-sandbox/cookies/temporary-exceptions/storage-partitioning-deprecation-trial" ><span class="devsite-nav-text" tooltip>Storage Partitioning deprecation trial</span></a></li> <li class="devsite-nav-item"><a href="/privacy-sandbox/cookies/temporary-exceptions/heuristics-based-exceptions" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /privacy-sandbox/cookies/temporary-exceptions/heuristics-based-exceptions" track-type="bookNav" track-name="click" track-metadata-eventdetail="/privacy-sandbox/cookies/temporary-exceptions/heuristics-based-exceptions" ><span class="devsite-nav-text" tooltip>Heuristics based exceptions</span></a></li> <li class="devsite-nav-item"><a href="/privacy-sandbox/cookies/temporary-exceptions/chrome-enterprise" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /privacy-sandbox/cookies/temporary-exceptions/chrome-enterprise" track-type="bookNav" track-name="click" track-metadata-eventdetail="/privacy-sandbox/cookies/temporary-exceptions/chrome-enterprise" ><span class="devsite-nav-text" tooltip>Chrome Enterprise policies</span></a></li> </ul> </div> </div> </nav> </devsite-book-nav> <section id="gc-wrapper"> <main role="main" class="devsite-main-content" has-book-nav > <devsite-content> <article class="devsite-article"> <div class="devsite-article-meta nocontent" role="navigation"> <ul class="devsite-breadcrumb-list" aria-label="Breadcrumb"> <li class="devsite-breadcrumb-item "> <a href="https://developers.google.com/" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="1" track-type="globalNav" track-name="breadcrumb" track-metadata-position="1" track-metadata-eventdetail="" > Home </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="https://developers.google.com/privacy-sandbox" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="2" track-type="globalNav" track-name="breadcrumb" track-metadata-position="2" track-metadata-eventdetail="Privacy Sandbox" > Privacy Sandbox </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="https://developers.google.com/privacy-sandbox/cookies" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="3" track-type="globalNav" track-name="breadcrumb" track-metadata-position="3" track-metadata-eventdetail="" > Cookies </a> </li> </ul> <devsite-thumb-rating position="header"> </devsite-thumb-rating> </div> <devsite-feedback position="header" project-name="Privacy Sandbox" product-id="5335444" bucket="" context="" version="t-devsite-webserver-20241114-r00-rc02.464922260396498922" data-label="Send Feedback Button" track-type="feedback" track-name="sendFeedbackLink" track-metadata-position="header" class="nocontent" disable-product-feedback project-icon="https://developers.google.com/static/privacy-sandbox/assets/images/privacy-sandbox-logo.png" > <button> Send feedback </button> </devsite-feedback> <h1 class="devsite-page-title" tabindex="-1"> Federated Credential Management API overview </h1> <devsite-feature-tooltip ack-key="AckCollectionsBookmarkTooltipDismiss" analytics-category="Site-Wide Custom Events" analytics-action-show="Callout Profile displayed" analytics-action-close="Callout Profile dismissed" analytics-label="Create Collection Callout" class="devsite-page-bookmark-tooltip nocontent" dismiss-button="true" id="devsite-collections-dropdown" dismiss-button-text="Dismiss" close-button-text="Got it"> <devsite-bookmark></devsite-bookmark> <span slot="popout-heading"> Stay organized with collections </span> <span slot="popout-contents"> Save and categorize content based on your preferences. </span> </devsite-feature-tooltip> <div class="devsite-page-title-meta"><devsite-view-release-notes></devsite-view-release-notes></div> <devsite-toc class="devsite-nav" depth="2" devsite-toc-embedded > </devsite-toc> <div class="devsite-article-body clearfix "> <p>A web API for privacy-preserving identity federation.</p> <h2 id="what_is_fedcm" data-text="What is FedCM?" tabindex="-1">What is FedCM?</h2> <p>FedCM (Federated Credential Management) is a privacy-preserving approach to federated identity services (such as &quot;Sign in with...&quot;) that doesn&#39;t rely on third-party cookies or navigational redirects.</p> <h2 id="implementation_status" data-text="Implementation status" tabindex="-1">Implementation status</h2> <ul> <li><a href="https://chromestatus.com/feature/6438627087220736">Chrome Platform Status</a></li> <li>FedCM shipped in Chrome 108.</li> <li>The <a href="https://github.com/fedidcg/FedCM">FedCM proposal</a> is open for <a href="https://github.com/fedidcg/FedCM/issues">public discussion</a>.</li> <li>FedCM isn&#39;t supported in other browsers yet. <ul> <li>Mozilla is <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1782066">implementing a prototype</a> for Firefox and <a href="https://lists.webkit.org/pipermail/webkit-dev/2022-March/032162.html">Apple has expressed general support</a> and interest in working together on the FedCM proposal.</li> </ul></li> </ul> <p>Moving forward, we plan to introduce <a href="#roadmap">a number of new features</a> based on the feedback we received from identity providers (IdP), relying parties (RP) and browser vendors. While we hope identity providers will adopt FedCM, be aware that FedCM is still an API under active development.</p> <p>To minimize the challenges of deploying backwards incompatible changes, we have two recommendations for identity providers:</p> <ul> <li>Subscribe to our <a href="https://groups.google.com/g/fedcm-developer-newsletter">newsletter</a> where we will send updates as the API evolves.</li> <li>We encourage IdPs to distribute the FedCM API using JavaScript SDKs while the API is maturing, and to discourage RPs from self-hosting SDKs. This will ensure IdPs can make changes as the API evolves, without having to ask all of their relying parties to redeploy.</li> </ul> <h2 id="why_do_we_need_fedcm" data-text="Why do we need FedCM?" tabindex="-1">Why do we need FedCM?</h2> <p>Over the last decade, identity federation has played a central role in raising the bar for authentication on the web, in terms of trustworthiness, ease-of-use (for example, passwordless single sign-in) and security (for example, improved resistance to phishing and credential stuffing attacks) compared to per-site usernames and passwords.</p> <p>With identity federation, an RP (relying party) relies on an IdP (identity provider) to provide the user an account without requiring a new username and password.</p> <aside class="key-term"><b>Key term:</b><em>Identity federation</em> delegates authentication or authorization of an individual (user or entity) to a trusted external party (an <em>identity provider</em> or IdP). The identity provider then allows the individual to sign in to a website (a <em>relying party</em> or RP).</aside> <p>Unfortunately, the mechanisms that identity federation has relied on (iframes, redirects and cookies) are actively being abused to track users across the web. As the user agent isn&#39;t able to differentiate between identity federation and tracking, the mitigations for the various types of abuse make the deployment of identity federation more difficult.</p> <p><a href="https://www.w3.org/TR/2024/WD-fedcm-1-20240820/">The Federated Credential Management API (FedCM)</a> provides a use-case-specific abstraction for federated identity flows on the web, by exposing a browser mediated dialog that allows users to choose accounts from IdPs to login to websites.</p> <p>FedCM is a multi-step journey to make identity on the web better. In its first step we are focused on reducing the impact of third-party cookie restrictions on federated identity (see <a href="#roadmap">the Roadmap section</a> for a few steps further).</p> <figure> <video autoplay loop muted controls playsinline width="900" alt="An animation of a desktop UI showing a user signing into a website with FedCM."> <source src="/static/privacy-sandbox/assets/videos/fedcm-sign-in-desktop.mp4" type="video/mp4" /> </video> <figcaption>A user is signing to an RP using FedCM.</figcaption> </figure> <h3 id="what_do_we_expect_will_be_affected" data-text="What do we expect will be affected?" tabindex="-1">What do we expect will be affected?</h3> <aside class="caution"><b>Caution:</b> The aim of the <a href="https://privacysandbox.com/">Privacy Sandbox initiative</a> is to mitigate all tracking vectors in Chrome. Our first step is to reduce the impact of third-party cookie restrictions. While removing these cookies can help reduce third-party tracking, it also impacts other cross-site use cases.</aside> <p>Through <a href="https://github.com/fedidcg/use-case-library/wiki/Primitives-by-Use-Case">community effort</a> and our research, we learned there are a few identity federation related integrations that are affected by third-party cookie restrictions:</p> <ul> <li><a href="https://openid.net/specs/openid-connect-frontchannel-1_0.html">OpenID Connect Front-Channel Logout</a></li> <li><a href="https://openid.net/specs/openid-connect-session-1_0.html">OpenID Connect Session Management</a></li> <li><a href="https://github.com/fedidcg/use-case-library/issues/10">Iframe-based background token renewal</a></li> <li><a href="https://github.com/fedidcg/use-case-library/issues/12">Iframe-based login widgets</a></li> </ul> <p>FedCM&#39;s first goal is to reduce the impact of third-party cookie restrictions on identity federation, and these are the areas we expect to be affected. If there are additional use cases not listed, you can <a href="#share-feedback">engage and share feedback</a>.</p> <h3 id="fedcm_as_a_trust_signal_for_other_apis" data-text="FedCM as a trust signal for other APIs" tabindex="-1">FedCM as a trust signal for other APIs</h3> <p>Along with handling federated identity, FedCM also serves as a trust signal for other Privacy Sandbox APIs.</p> <p>Starting from Chrome 131, the <a href="/privacy-sandbox/cookies/storage-access-api">Storage Access API (SAA)</a> uses FedCM as a <a href="/privacy-sandbox/cookies/storage-access-api#fedcm">trust signal</a>. This integration is useful for the websites that rely on both FedCM for authentication and the SAA to enable cross-origin iframes to access necessary storage.</p> <p>When a user authenticates with FedCM, with RP opt-in, the IdP&#39;s content embedded on the RP&#39;s website can call the <code translate="no" dir="ltr">requestStorageAccess()</code> method to <a href="/privacy-sandbox/cookies/storage-access-api#using-saa">automatically get storage access</a> to its own top-level cookies without needing an additional user prompt. The permission will be auto-granted only as long as the user is signed in with FedCM and the FedCM sign-in state is active. Read the <a href="/privacy-sandbox/cookies/storage-access-api#fedcm">Storage Access API documentation</a> for more details.</p> <h2 id="who-uses-fedcm" data-text="Who should use FedCM?" tabindex="-1">Who should use FedCM?</h2> <p>We expect FedCM to be useful to you only if <strong>all</strong> these conditions apply:</p> <ol> <li>You&#39;re an identity provider (IdP).</li> <li>You&#39;re affected by the third-party cookie restrictions.</li> <li>Your RPs are third-party sites. If your RPs are meaningfully related sites, you may be better served by <a href="/privacy-sandbox/cookies/related-website-sets">Related Website Sets</a>.</li> </ol> <h3 id="idp" data-text="You're an IdP" tabindex="-1">You're an IdP</h3> <p>FedCM requires support from an identity provider. A relying party cannot use FedCM independently. If you are an RP, you can ask your IdP to provide instructions.</p> <h3 id="unaffected-by-3p-cookies" data-text="You're affected by the third-party cookie restrictions" tabindex="-1">You're affected by the third-party cookie restrictions</h3> <p>You should only use FedCM if your current integration is affected by the third-party cookie restrictions.</p> <p>If you&#39;re unsure if your identity federation will continue to work when third-party cookies are not available, you can test the effect on a website by <a href="/privacy-sandbox/cookies/fedcm-developer-guide#block-third-party-cookies">blocking third-party cookies on Chrome</a>.</p> <p>If there is no discoverable impact on your identity federation without third-party cookies, you can continue using your current integration without FedCM.</p> <p>If you aren&#39;t sure what to check for, read more about the <a href="https://github.com/fedidcg/use-case-library/wiki/Primitives-by-Use-Case">known features</a> that third-party cookie restrictions are expected to affect.</p> <h3 id="your_rps_are_third-party" data-text="Your RPs are third-party" tabindex="-1">Your RPs are third-party</h3> <p>If you&#39;re an identity provider whose RPs have a first-party relationship to IdP, we expect <a href="/privacy-sandbox/cookies/related-website-sets">Related Website Sets</a> may be a better option. Related Website Sets (RWS) is a way for an organization to declare relationships among sites, so that browsers allow limited third-party cookie access for specific purposes. This allows third-party cookies to work among sets of meaningfully related sites, even when third-party cookies are otherwise restricted.</p> <h2 id="use-cases" data-text="How will users interact with FedCM?" tabindex="-1">How will users interact with FedCM?</h2> <p>FedCM&#39;s primary focus is to mitigate the impact of third-party cookie restrictions. Users can enable or disable FedCM in <a href="#user-settings">Chrome&#39;s user settings</a>.</p> <p>FedCM is designed to be protocol-agnostic and offers the following authentication-related functionalities.</p> <ul> <li><a href="#sign-in">Use an identity provider to sign-in to a relying party</a></li> </ul> <p><a href="https://fedcm-rp-demo.glitch.me">Check out our demo</a> to see how it works.</p> <h3 id="sign-in" data-text="Sign in to a relying party" tabindex="-1">Sign in to a relying party</h3> <figure> <video autoplay loop muted controls playsinline width="300" alt="An animation showing the UI as a user signs into a website with FedCM."> <source src="/static/privacy-sandbox/assets/videos/fedcm-sign-in-mobile.mp4" type="video/mp4" /> </video> <figcaption>A user signs into an RP using FedCM.</figcaption> </figure> <p>When the user lands on the relying party (RP) website, a FedCM sign-in dialog will appear if the user is signed in to the IdP.</p> <p>If the user doesn&#39;t have an account on the RP with the IdP, a sign-up dialog appears with additional disclosure text such as the RP&#39;s terms of service and a privacy policy if they are provided.</p> <p>The user can complete sign in by tapping <strong>Continue as...</strong>. If successful, the browser stores the fact that the user has created a federated account on the RP with the IdP.</p> <p>RPs are expected to work on browsers which don&#39;t support FedCM. Users should be able to use an existing, non-FedCM sign-in process. Learn more about <a href="/privacy-sandbox/cookies/fedcm-developer-guide#sign-into-rp">how sign-in works in the FedCM</a>.</p> <aside class="caution"><strong>Caution:</strong><span> The sign-in dialog enables users to sign in to an RP with their federated account, but shouldn&#39;t be relied upon as a consent under ePrivacy and data protection laws in the European Economic Area (EEA) and the UK. If you determine you need user consent under these laws for some of your data processing, (which could be because you are using API data for purposes beyond authentication, for example showing personalized ads to users), you must obtain that consent separately from the FedCM dialog. For more information, see the <a href="#compliance">Compliance section</a>, and our <a href="/privacy-sandbox/overview/privacy-compliance-faqs">Privacy-related Compliance FAQs</a>.</span></aside> <h3 id="user-settings" data-text="Settings to enable or disable FedCM" tabindex="-1">Settings to enable or disable FedCM</h3> <p>Users can enable or disable FedCM in settings on Chrome on Android. Go to <strong>Settings</strong> &gt; <strong>Site settings</strong> &gt; <strong>Third-party sign-in</strong>, then change the toggle.</p> <figure> <img src="/static/privacy-sandbox/assets/images/enable-fedcm-chrome-sett-acb36abf28b59.jpg" class="screenshot" alt="Enable FedCM in Chrome Settings on mobile by toggling on Third-party sign-in" width="400" height="187"> </figure> <p>They can do the same for Chrome on desktop by going to <code translate="no" dir="ltr">chrome://settings/content/federatedIdentityApi</code>.</p> <figure> <img src="/static/privacy-sandbox/assets/images/enable-fedcm-chrome-sett-ebbf4834f6f21.png" alt="Enable FedCM in Chrome Settings on desktop by toggling on Third-party sign-in" width="600" height="509"> </figure> <h4 id="prompt_cooldown_period" data-text="Prompt cooldown period" tabindex="-1">Prompt cooldown period</h4> <p>If the user closes the UI manually, an entry would be temporarily added to the <a href="#user-settings">settings UI</a> and the UI won&#39;t be displayed in the same website for a period of time. The UI will be reenabled after the period, but the duration will be exponentially expanded on consecutive closes. For example, in Chrome:</p> <table> <thead> <tr> <th>Consecutive times closed</th> <th>Time period that FedCM prompt is suppressed</th> </tr> </thead> <tbody> <tr> <td>1</td> <td>Two hours</td> </tr> <tr> <td>2</td> <td>One day</td> </tr> <tr> <td>3</td> <td>One week</td> </tr> <tr> <td>4+</td> <td>Four weeks</td> </tr> </tbody> </table> <p>Other browsers may define their own, different, cooldown time periods.</p> <p>Users can re-enable FedCM on the RP manually by either going to the <a href="#user-settings">settings page</a> or clicking on the PageInfo UI (a lock icon beside the URL bar) and resetting the permission.</p> <h2 id="roadmap" data-text="Roadmap" tabindex="-1">Roadmap</h2> <p>We are working on landing a number of changes to FedCM. See <a href="/privacy-sandbox/cookies/fedcm-updates">Updates</a> for more details.</p> <ul> <li><strong>Change Log</strong>: Federated Credential Management API <a href="/privacy-sandbox/cookies/fedcm-updates">updates</a>.</li> </ul> <p>There are a few things we know that still need to be done, including issues we heard about from IdPs, RPs and browser vendors. We believe we know how to resolve these issues:</p> <ul> <li><strong>Cross-origin iframe support</strong>: IdPs can call FedCM from within a cross-origin iframe (<a href="/privacy-sandbox/cookies/fedcm-developer-guide#call-fedcm-from-within-a-cross-origin-iframe">update</a>).</li> <li><strong>Personalized button</strong>: IdPs can display a returning user&#39;s identity on the sign-in button from within an IdP owned cross-origin iframe (<a href="/privacy-sandbox/blog/fedcm-chrome-116-updates#user-info">update</a>).</li> <li><strong>Metrics endpoint</strong>: Provides performance metrics to IdPs.</li> </ul> <p>Additionally, there are unresolved issues we are actively exploring including specific proposals that we are evaluating or prototyping:</p> <ul> <li><strong>CORS</strong>: We are <a href="https://github.com/fedidcg/FedCM/issues/320">discussing with Apple and Mozilla</a> to ensure to improve the specification of FedCM fetches.</li> <li><strong>Multiple-IdP API</strong>: We are exploring ways to support <a href="https://github.com/fedidcg/FedCM/issues/319">multiple IdPs</a> to coexist cooperatively in the FedCM account chooser.</li> <li><strong>IdP Sign-in Status API</strong>: Mozilla has identified a <a href="https://github.com/fedidcg/FedCM/issues/230">timing attack issue</a>, and we are exploring ways for an IdP to proactively <a href="https://github.com/w3c-fedid/login-status">notify the browser of the user&#39;s sign-in status</a> to mitigate the issue. (<a href="/privacy-sandbox/blog/fedcm-chrome-120-updates#login-status-api">update</a>)</li> <li><strong>Sign in to IdP API</strong>: To support <a href="https://github.com/fedidcg/FedCM/issues/348">various scenarios</a>, when a user is not signed in to the IdP, the browser provides a UI for the user to sign in without leaving the RP.</li> </ul> <p>Finally, there are things we believe still need to be done, based on feedback from <a href="https://github.com/mozilla/standards-positions/issues/618#issuecomment-1221964677">Mozilla</a>, <a href="https://lists.webkit.org/pipermail/webkit-dev/2022-March/032162.html">Apple</a> and <a href="https://github.com/w3ctag/design-reviews/issues/718#issue-1165654549">TAG reviewers</a>. We are working to evaluate the best solutions for these open questions:</p> <ul> <li><strong>Improving user comprehension and matching intent</strong>: As <a href="https://github.com/mozilla/standards-positions/issues/618#issuecomment-1221964677">Mozilla noted</a>, we&#39;d like to continue exploring different UX formulations and surface areas, as well as triggering criteria.</li> <li><strong>Identity Attributes and Selective Disclosure</strong>: As our <a href="https://github.com/w3ctag/design-reviews/issues/718#issuecomment-1171733526">TAG Reviewers noted</a>, we&#39;d like to provide a mechanism to selectively share more or less identity attributes (such as emails, age brackets, phone numbers, and so on).</li> <li><strong>Raising the Privacy Properties</strong>: As Mozilla suggested <a href="https://github.com/mozilla/standards-positions/issues/618#issuecomment-1221964677">in its standards position</a>, we&#39;d like to continue exploring mechanisms to offer better privacy guarantees, such as IdP blindness, directed identifiers.</li> <li><strong>Relationship with WebAuthn</strong>: As suggested by <a href="https://lists.webkit.org/pipermail/webkit-dev/2022-March/032162.html">Apple</a>, we are super excited to see the progress on <a href="http://goo.gle/passkeys">passkeys</a> and to work on providing a coherent and cohesive experience between FedCM, Passwords, WebAuthn and WebOTP.</li> <li><strong>Login Status</strong>: As Apple suggested with the Privacy CG&#39;s <a href="https://github.com/privacycg/is-logged-in">Login Status API</a>, we share the intuition that the user&#39;s login status is a useful bit of information that can help browsers make informed decisions, and we are excited to see what opportunities arise from that. (<a href="/privacy-sandbox/blog/fedcm-chrome-120-updates#login-status-api">update</a>)</li> <li><strong>Enterprises and Education</strong>: As is clear at the FedID CG, there are still <a href="https://github.com/fedidcg/use-case-library/blob/main/decision_tree_flows/login/Federated%20Login%20OIDC%20Oauth2%20Auth%20Code%20Flow.png">a lot of use cases</a> that are not well served by FedCM that we&#39;d like to work on, such as front-channel logout (the ability for an IdP to send a signal to RPs to logout) and support for SAML.</li> <li><strong>Relationship with mDLs/VCs/etc</strong>: continue working to understand how these fit within FedCM, for example with the <a href="https://github.com/WICG/mobile-document-request-api">Mobile Document Request API</a>.</li> </ul> <h2 id="use-api" data-text="Use the FedCM API" tabindex="-1">Use the FedCM API</h2> <p>You need a secure context (HTTPS or localhost) both on the IdP and RP in Chrome to use FedCM.</p> <p>To integrate with FedCM you need to create a well-known file, config file and endpoints for accounts list, assertion issuance and (optionally) client metadata. From there, FedCM exposes JavaScript APIs that RPs can use to sign in with the IdP.</p> <p>To learn how to use the FedCM API check out the <a href="/privacy-sandbox/cookies/fedcm-developer-guide">FedCM developer guide</a>.</p> <h2 id="share-feedback" data-text="Engage and share feedback" tabindex="-1">Engage and share feedback</h2> <ul> <li><strong>GitHub</strong>: Read the <a href="https://github.com/w3c-fedid/FedCM">explainer</a>, <a href="https://github.com/fedidcg/FedCM/issues">raise issues and follow discussion</a>.</li> <li><strong>Developer support</strong>: Ask questions and join discussions on the <a href="https://github.com/GoogleChromeLabs/privacy-sandbox-dev-support">Privacy Sandbox Developer Support repo</a>.</li> </ul> <h2 id="compliance" data-text="Compliance with ePrivacy laws" tabindex="-1">Compliance with ePrivacy laws</h2> <p>Using FedCM, either as an IdP or an RP, involves the storage of information on a user&#39;s terminal equipment or access to information already stored in it, and is therefore an activity subject to ePrivacy laws in the European Economic Area (EEA) and the UK generally requiring user consent. It is your responsibility to determine whether your use of FedCM is <strong>strictly necessary</strong> to provide an online service explicitly requested by the user, and therefore exempt from the consent requirement. For more information, we encourage you to read our Privacy Sandbox <a href="/privacy-sandbox/overview/privacy-compliance-faqs">Privacy-related Compliance FAQs</a>.</p> </div> <devsite-recommendations display="in-page" hidden yield> </devsite-recommendations> <devsite-thumb-rating position="footer"> </devsite-thumb-rating> <devsite-feedback position="footer" project-name="Privacy Sandbox" product-id="5335444" bucket="" context="" version="t-devsite-webserver-20241114-r00-rc02.464922260396498922" data-label="Send Feedback Button" track-type="feedback" track-name="sendFeedbackLink" track-metadata-position="footer" class="nocontent" disable-product-feedback project-icon="https://developers.google.com/static/privacy-sandbox/assets/images/privacy-sandbox-logo.png" > <button> Send feedback </button> </devsite-feedback> <devsite-recommendations id="recommendations-link" yield></devsite-recommendations> <div class="devsite-floating-action-buttons"> </div> </article> <devsite-content-footer class="nocontent"> <p>Except as otherwise noted, the content of this page is licensed under the <a href="https://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 License</a>, and code samples are licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache 2.0 License</a>. For details, see the <a href="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 2024-05-27 UTC.</p> </devsite-content-footer> <devsite-notification > </devsite-notification> <div class="devsite-content-data"> <template class="devsite-thumb-rating-feedback"> <devsite-feedback position="thumb-rating" project-name="Privacy Sandbox" product-id="5335444" bucket="" context="" version="t-devsite-webserver-20241114-r00-rc02.464922260396498922" data-label="Send Feedback Button" track-type="feedback" track-name="sendFeedbackLink" track-metadata-position="thumb-rating" class="nocontent" disable-product-feedback project-icon="https://developers.google.com/static/privacy-sandbox/assets/images/privacy-sandbox-logo.png" > <button> Need to tell us more? </button> </devsite-feedback> </template> <template class="devsite-content-data-template"> [[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2024-05-27 UTC."],[],[]] </template> </div> </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">Get support</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="https://github.com/privacysandbox/privacy-sandbox-dev-support" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)" > Ask a question on our GitHub support repo </a> </li> <li class="devsite-footer-linkbox-item"> <a href="https://goo.gle/privacy-sandbox-feedback" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)" > Submit project feedback </a> </li> </ul> </li> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Get updates</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="/privacy-sandbox/blog" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)" > Developer blog </a> </li> <li class="devsite-footer-linkbox-item"> <a href="https://privacysandbox.com/news/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)" > Project news </a> </li> </ul> </li> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Resources</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="https://privacysandbox.com/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)" > Project site </a> </li> <li class="devsite-footer-linkbox-item"> <a href="https://privacysandbox.com/open-web/#the-privacy-sandbox-timeline" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)" > Privacy Sandbox timeline </a> </li> </ul> </li> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Tools</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="https://goo.gle/psat" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)" > Privacy Sandbox Analysis Tool </a> </li> <li class="devsite-footer-linkbox-item"> <a href="https://privacy-sandbox-demos.dev/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)" > Privacy Sandbox demos </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://developers.google.com/" class="devsite-footer-sites-logo-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Google Developers Link"> <picture> <img class="devsite-footer-sites-logo" src="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers/images/lockup-google-for-developers.svg" loading="lazy" alt="Google Developers"> </picture> </a> <ul class="devsite-footer-sites-list"> <li class="devsite-footer-sites-item"> <a href="//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="//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="//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="//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="//ai.google.dev/" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Google AI Link" > Google AI </a> </li> <li class="devsite-footer-sites-item"> <a href="/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="/terms/site-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="//policies.google.com/privacy" data-category="Site-Wide Custom Events" data-label="Footer Privacy link" > Privacy </a> </li> <li class="devsite-footer-utility-item glue-cookie-notification-bar-control"> <a class="devsite-footer-utility-link gc-analytics-event" href="#" data-category="Site-Wide Custom Events" data-label="Footer Manage cookies link" aria-hidden="true" > Manage cookies </a> </li> <li class="devsite-footer-utility-item devsite-footer-utility-button"> <span class="devsite-footer-utility-description">Sign up for the Google for Developers newsletter</span> <a class="devsite-footer-utility-link gc-analytics-event" href="/newsletter/subscribe" data-category="Site-Wide Custom Events" data-label="Footer Subscribe link" > Subscribe </a> </li> </ul> <devsite-language-selector> <ul role="presentation"> <li role="presentation"> <a role="menuitem" lang="en" >English</a> </li> <li role="presentation"> <a role="menuitem" lang="de" >Deutsch</a> </li> <li role="presentation"> <a role="menuitem" lang="es" >Español</a> </li> <li role="presentation"> <a role="menuitem" lang="es_419" >Español – América Latina</a> </li> <li role="presentation"> <a role="menuitem" lang="fr" >Français</a> </li> <li role="presentation"> <a role="menuitem" lang="id" >Indonesia</a> </li> <li role="presentation"> <a role="menuitem" lang="it" >Italiano</a> </li> <li role="presentation"> <a role="menuitem" lang="pl" >Polski</a> </li> <li role="presentation"> <a role="menuitem" lang="pt_br" >Português – Brasil</a> </li> <li role="presentation"> <a role="menuitem" lang="vi" >Tiếng Việt</a> </li> <li role="presentation"> <a role="menuitem" lang="tr" >Türkçe</a> </li> <li role="presentation"> <a role="menuitem" lang="ru" >Русский</a> </li> <li role="presentation"> <a role="menuitem" lang="he" >עברית</a> </li> <li role="presentation"> <a role="menuitem" lang="ar" >العربيّة</a> </li> <li role="presentation"> <a role="menuitem" lang="fa" >فارسی</a> </li> <li role="presentation"> <a role="menuitem" lang="hi" >हिंदी</a> </li> <li role="presentation"> <a role="menuitem" lang="bn" >বাংলা</a> </li> <li role="presentation"> <a role="menuitem" lang="th" >ภาษาไทย</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_cn" >中文 – 简体</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_tw" >中文 – 繁體</a> </li> <li role="presentation"> <a role="menuitem" lang="ja" >日本語</a> </li> <li role="presentation"> <a role="menuitem" lang="ko" >한국어</a> </li> </ul> </devsite-language-selector> </nav> </div> </devsite-footer-utility> <devsite-panel></devsite-panel> <devsite-concierge data-info-panel data-ai-panel data-api-explorer-panel > </devsite-concierge> </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>[{&#34;dimensions&#34;: {&#34;dimension4&#34;: &#34;Privacy Sandbox&#34;, &#34;dimension1&#34;: &#34;Signed out&#34;, &#34;dimension5&#34;: &#34;en&#34;, &#34;dimension11&#34;: false, &#34;dimension6&#34;: &#34;en&#34;, &#34;dimension3&#34;: false}, &#34;gaid&#34;: &#34;UA-24532603-1&#34;, &#34;metrics&#34;: {&#34;ratings_count&#34;: &#34;metric2&#34;, &#34;ratings_value&#34;: &#34;metric1&#34;}, &#34;purpose&#34;: 1}]</script> <script type="application/json" tag-management>{&#34;at&#34;: &#34;True&#34;, &#34;ga4&#34;: [{&#34;id&#34;: &#34;G-272J68FCRF&#34;, &#34;purpose&#34;: 1}], &#34;ga4p&#34;: [{&#34;id&#34;: &#34;G-272J68FCRF&#34;, &#34;purpose&#34;: 1}], &#34;gtm&#34;: [{&#34;id&#34;: &#34;GTM-WPJH8HP6&#34;, &#34;purpose&#34;: 0}], &#34;parameters&#34;: {&#34;internalUser&#34;: &#34;False&#34;, &#34;language&#34;: {&#34;machineTranslated&#34;: &#34;False&#34;, &#34;requested&#34;: &#34;en&#34;, &#34;served&#34;: &#34;en&#34;}, &#34;pageType&#34;: &#34;article&#34;, &#34;projectName&#34;: &#34;Privacy Sandbox&#34;, &#34;signedIn&#34;: &#34;False&#34;, &#34;tenant&#34;: &#34;developers&#34;, &#34;recommendations&#34;: {&#34;sourcePage&#34;: &#34;&#34;, &#34;sourceType&#34;: 0, &#34;sourceRank&#34;: 0, &#34;sourceIdenticalDescriptions&#34;: 0, &#34;sourceTitleWords&#34;: 0, &#34;sourceDescriptionWords&#34;: 0, &#34;experiment&#34;: &#34;&#34;}, &#34;experiment&#34;: {&#34;ids&#34;: &#34;&#34;}}}</script> </devsite-analytics> <devsite-badger></devsite-badger> <script nonce="TRS43U+lLYhO2YnYUlLp+LBbVksY8+"> (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://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers/js/app_loader.js', '[1,"en",null,"/js/devsite_app_module.js","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers","https://developers-dot-devsite-v2-prod.appspot.com",null,null,["/_pwa/developers/manifest.json","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/images/video-placeholder.svg","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers/images/favicon-new.png","https://fonts.googleapis.com/css?family=Google+Sans:400,500|Roboto:400,400italic,500,500italic,700,700italic|Roboto+Mono:400,500,700&display=swap"],1,null,[1,6,8,12,14,17,21,25,50,52,63,70,75,76,80,87,91,92,93,97,98,100,101,102,103,104,105,107,108,109,110,112,113,117,118,120,122,124,125,126,127,129,130,131,132,133,134,135,136,138,140,141,147,148,149,151,152,156,157,158,159,161,163,164,168,169,170,179,180,182,183,186,191,193,196],"AIzaSyAP-jjEJBzmIyKR4F-3XITp8yM9T1gEEI8","AIzaSyB6xiKGDR5O3Ak2okS4rLkauxGUG7XP0hg","developers.google.com","AIzaSyAQk0fBONSGUqCNznf6Krs82Ap1-NV6J4o","AIzaSyCCxcqdrZ_7QMeLCRY20bh_SXdAYqy70KY",null,null,null,["MiscFeatureFlags__enable_variable_operator","Concierge__enable_pushui","Profiles__enable_awarding_url","MiscFeatureFlags__enable_firebase_utm","Significatio__enable_by_tenant","Cloud__enable_cloud_facet_chat","Search__enable_dynamic_content_confidential_banner","Cloud__enable_cloud_dlp_service","Profiles__require_profile_eligibility_for_signin","Profiles__enable_completecodelab_endpoint","CloudShell__cloud_shell_button","Profiles__enable_public_developer_profiles","TpcFeatures__enable_required_headers","Cloud__enable_cloudx_ping","Profiles__enable_developer_profiles_callout","MiscFeatureFlags__developers_footer_image","Cloud__enable_cloudx_experiment_ids","Profiles__enable_release_notes_notifications","MiscFeatureFlags__enable_explain_this_code","Analytics__enable_clearcut_logging","CloudShell__cloud_code_overflow_menu","Profiles__enable_profile_collections","Search__enable_ai_search_summaries","Search__enable_page_map","MiscFeatureFlags__enable_project_variables","DevPro__enable_developer_subscriptions","EngEduTelemetry__enable_engedu_telemetry","Profiles__enable_recognition_badges","Search__enable_ai_search_summaries_restricted","Search__enable_suggestions_from_borg","MiscFeatureFlags__developers_footer_dark_image","Profiles__enable_page_saving","Cloud__enable_cloud_shell_fte_user_flow","MiscFeatureFlags__emergency_css","Concierge__enable_concierge_restricted","Cloud__enable_legacy_calculator_redirect","MiscFeatureFlags__enable_view_transitions","Cloud__enable_cloud_shell","Profiles__enable_dashboard_curated_recommendations","Search__enable_ai_eligibility_checks","Concierge__enable_concierge","Cloud__enable_llm_concierge_chat","Profiles__enable_complete_playlist_endpoint","DevPro__enable_cloud_innovators_plus","BookNav__enable_tenant_cache_key","TpcFeatures__enable_mirror_tenant_redirects","Cloud__enable_free_trial_server_call","Experiments__reqs_query_experiments"],null,null,"AIzaSyBLEMok-5suZ67qRPzx0qUtbnLmyT_kCVE","https://developerscontentserving-pa.clients6.google.com","AIzaSyCM4QpTRSqP5qI4Dvjt4OAScIN8sOUlO-k","https://developerscontentsearch-pa.clients6.google.com",1,4,null,"https://developerprofiles-pa.clients6.google.com",[1,"developers","Google for Developers","developers.google.com",null,"developers-dot-devsite-v2-prod.appspot.com",null,null,[1,1,[1],null,null,null,null,null,null,null,null,[1],null,null,null,null,null,null,[1],[1,null,null,[1,20],"/recommendations/information"],null,null,null,[1,1,1],[1,1,null,1,1]],null,[null,null,null,null,null,null,"/images/lockup-new.svg","/images/touchicon-180-new.png",null,null,null,null,1,null,null,null,null,null,null,null,null,1,null,null,null,"/images/lockup-dark-theme-new.svg",[]],[],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[6,1,14,15,20,22,23,29,32,36],null,[[null,null,null,[3,7,10,2,39,17,4,32,24,11,12,13,34,15,25],null,null,[1,[["docType","Choose a content type",[["Tutorial",null,null,null,null,null,null,null,null,"Tutorial"],["Guide",null,null,null,null,null,null,null,null,"Guide"],["Sample",null,null,null,null,null,null,null,null,"Sample"]]],["product","Choose a product",[["Android",null,null,null,null,null,null,null,null,"Android"],["ARCore",null,null,null,null,null,null,null,null,"ARCore"],["ChromeOS",null,null,null,null,null,null,null,null,"ChromeOS"],["Firebase",null,null,null,null,null,null,null,null,"Firebase"],["Flutter",null,null,null,null,null,null,null,null,"Flutter"],["Assistant",null,null,null,null,null,null,null,null,"Google Assistant"],["GoogleCloud",null,null,null,null,null,null,null,null,"Google Cloud"],["GoogleMapsPlatform",null,null,null,null,null,null,null,null,"Google Maps Platform"],["GooglePay",null,null,null,null,null,null,null,null,"Google Pay & Google Wallet"],["GooglePlay",null,null,null,null,null,null,null,null,"Google Play"],["Tensorflow",null,null,null,null,null,null,null,null,"TensorFlow"]]],["category","Choose a topic",[["AiAndMachineLearning",null,null,null,null,null,null,null,null,"AI and Machine Learning"],["Data",null,null,null,null,null,null,null,null,"Data"],["Enterprise",null,null,null,null,null,null,null,null,"Enterprise"],["Gaming",null,null,null,null,null,null,null,null,"Gaming"],["Mobile",null,null,null,null,null,null,null,null,"Mobile"],["Web",null,null,null,null,null,null,null,null,"Web"]]]]]],[1,1],null,1],[[["UA-24532603-1"],["UA-22084204-5"],null,null,["UA-24532603-5"],null,null,[["G-272J68FCRF"],null,null,[["G-272J68FCRF",2]]],[["UA-24532603-1",2]],null,[["UA-24532603-5",2]],null,1],[[12,9],[5,4],[11,8],[4,3],[3,2],[13,10],[16,13],[6,5],[1,1],[15,12],[14,11]],[[1,1],[2,2]]],null,4,null,null,null,null,null,null,null,null,null,null,null,null,null,"developers.devsite.google"],null,"pk_live_5170syrHvgGVmSx9sBrnWtA5luvk9BwnVcvIi7HizpwauFG96WedXsuXh790rtij9AmGllqPtMLfhe2RSwD6Pn38V00uBCydV4m"]') </script> <devsite-a11y-announce></devsite-a11y-announce> </body> </html>

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