Permita que os usuários se autentiquem com o Firebase usando provedores OAuth, como o Microsoft Azure Active Directory. Basta integrar o login genérico do OAuth ao seu app usando o SDK do Firebase para realizar o fluxo de login completo.
Antes de começar
Para fazer login de usuários usando contas da Microsoft (Azure Active Directory e contas pessoais da Microsoft), primeiro ative a Microsoft como um provedor de login do seu projeto do Firebase:
- Adicione o Firebase ao seu projeto em JavaScript.
- No console do Firebase, abra a seção Auth.
- Na guia Método de login, ative o provedor Microsoft.
- Adicione o ID do cliente e a Chave secreta do cliente do console do desenvolvedor às
configurações do provedor:
  - Para registrar um cliente OAuth da Microsoft, siga as instruções em Guia de início rápido: como registrar um app com o endpoint do Azure Active Directory v2.0. Observe que esse endpoint oferece suporte para o login de contas pessoais da Microsoft, bem como de contas do Azure Active Directory. Saiba mais sobre o Azure Active Directory v2.0.
- Ao registrar apps nesses provedores, registre o domínio *.firebaseapp.comdo projeto como o domínio de redirecionamento do seu app.
 
- Clique em Salvar.
Processar o fluxo de login com o SDK do Firebase
Se você está desenvolvendo um app da Web, a maneira mais fácil de autenticar seus usuários com o Firebase usando contas da Microsoft é processando o fluxo de login com o SDK do Firebase para JavaScript.
Para processar o fluxo de login com o SDK do Firebase para JavaScript, siga estas etapas:
- Crie uma instância de um OAuthProvider usando o código de provedor microsoft.com. - Web- import { OAuthProvider } from "firebase/auth"; const provider = new OAuthProvider('microsoft.com'); - Web- var provider = new firebase.auth.OAuthProvider('microsoft.com'); 
- Opcional: especifique os parâmetros OAuth personalizados que você quer enviar com a solicitação OAuth. - Web- provider.setCustomParameters({ // Force re-consent. prompt: 'consent', // Target specific email with login hint. login_hint: 'user@firstadd.onmicrosoft.com' }); - Web- provider.setCustomParameters({ // Force re-consent. prompt: 'consent', // Target specific email with login hint. login_hint: 'user@firstadd.onmicrosoft.com' }); - Para saber quais parâmetros são aceitos pela Microsoft, consulte a documentação do OAuth da Microsoft. Não é possível transmitir os parâmetros exigidos pelo Firebase com - setCustomParameters(). Esses parâmetros são client_id, response_type, redirect_uri, state, scope e response_mode.- Para permitir que apenas usuários de um determinado locatário do Azure AD façam login no aplicativo, é possível usar o nome de domínio do locatário do Azure AD ou o identificador GUID do locatário. Isso pode ser feito ao especificar o campo "locatário" no objeto de parâmetros personalizados. - Web- provider.setCustomParameters({ // Optional "tenant" parameter in case you are using an Azure AD tenant. // eg. '8eaef023-2b34-4da1-9baa-8bc8c9d6a490' or 'contoso.onmicrosoft.com' // or "common" for tenant-independent tokens. // The default value is "common". tenant: 'TENANT_ID' }); - Web- provider.setCustomParameters({ // Optional "tenant" parameter in case you are using an Azure AD tenant. // eg. '8eaef023-2b34-4da1-9baa-8bc8c9d6a490' or 'contoso.onmicrosoft.com' // or "common" for tenant-independent tokens. // The default value is "common". tenant: 'TENANT_ID' }); 
- Opcional: especifique os outros escopos de OAuth 2.0 além do perfil básico que você quer solicitar ao provedor de autenticação. - provider.addScope('mail.read'); provider.addScope('calendars.read');- Para saber mais, consulte a documentação de permissões e consentimento da Microsoft (em inglês). 
- Use o objeto de provedor do OAuth para a autenticação no Firebase. É possível solicitar que os usuários façam login com as respectivas contas da Microsoft em uma nova janela pop-up ou pelo redirecionamento à página de login. O método de redirecionamento é bom para dispositivos móveis. - Para fazer login com uma janela pop-up, chame signInWithPopup:
 - Web- import { getAuth, signInWithPopup, OAuthProvider } from "firebase/auth"; const auth = getAuth(); signInWithPopup(auth, provider) .then((result) => { // User is signed in. // IdP data available in result.additionalUserInfo.profile. // Get the OAuth access token and ID Token const credential = OAuthProvider.credentialFromResult(result); const accessToken = credential.accessToken; const idToken = credential.idToken; }) .catch((error) => { // Handle error. }); - Web- firebase.auth().signInWithPopup(provider) .then((result) => { // IdP data available in result.additionalUserInfo.profile. // ... /** @type {firebase.auth.OAuthCredential} */ var credential = result.credential; // OAuth access and id tokens can also be retrieved: var accessToken = credential.accessToken; var idToken = credential.idToken; }) .catch((error) => { // Handle error. }); - Para redirecionar os usuários à página de login, chame signInWithRedirect:
 - Siga as práticas recomendadas ao usar - signInWithRedirect,- linkWithRedirectou- reauthenticateWithRedirect.- Web- import { getAuth, signInWithRedirect } from "firebase/auth"; const auth = getAuth(); signInWithRedirect(auth, provider); - Web- firebase.auth().signInWithRedirect(provider); - Depois que o usuário fizer login e retornar à página, chame - getRedirectResultpara saber o resultado do login.- Web- import { getAuth, getRedirectResult, OAuthProvider } from "firebase/auth"; const auth = getAuth(); getRedirectResult(auth) .then((result) => { // User is signed in. // IdP data available in result.additionalUserInfo.profile. // Get the OAuth access token and ID Token const credential = OAuthProvider.credentialFromResult(result); const accessToken = credential.accessToken; const idToken = credential.idToken; }) .catch((error) => { // Handle error. }); - Web- firebase.auth().getRedirectResult() .then((result) => { // IdP data available in result.additionalUserInfo.profile. // ... /** @type {firebase.auth.OAuthCredential} */ var credential = result.credential; // OAuth access and id tokens can also be retrieved: var accessToken = credential.accessToken; var idToken = credential.idToken; }) .catch((error) => { // Handle error. }); - Se o processo foi concluído, o token de acesso OAuth associado ao provedor pode ser recuperado com o objeto - firebase.auth.UserCredentialretornado.- Com o token de acesso OAuth, é possível chamar a API Microsoft Graph. - Por exemplo, para receber as informações básicas do perfil, é possível chamar a seguinte API REST: - curl -i -H "Authorization: Bearer ACCESS_TOKEN" https://graph.microsoft.com/v1.0/me - Ao contrário de outros provedores compatíveis com o Firebase Authentication, a Microsoft não fornece um URL de foto. Em vez disso, os dados binários de uma foto do perfil precisam ser solicitados por meio da API Microsoft Graph. - Além do token de acesso OAuth, é possível usar o objeto - firebase.auth.UserCredentialpara recuperar o token de ID OAuth do usuário. A declaração- subno token de ID é específica do app e não corresponderá ao identificador de usuário federado, que é usado pelo Firebase Authentication e pode ser acessado por- user.providerData[0].uid. Nesse caso, o campo de declaração- oiddeve ser utilizado. Ao usar um locatário do Azure AD para fazer login, a declaração- oidserá uma correspondência exata. No entanto, para o caso sem locatário, o campo- oidserá preenchido. Para um ID federado- 4b2eabcdefghijkl,- oidterá um formulário- 00000000-0000-0000-4b2e-abcdefghijkl.
- Para fazer login com uma janela pop-up, chame 
- Os exemplos acima se concentram nos fluxos de login, mas também é possível vincular um provedor da Microsoft a um usuário atual usando - linkWithPopup/- linkWithRedirect. Por exemplo, é possível vincular vários provedores ao mesmo usuário, isso permitirá que ele faça login usando qualquer um deles.- Web- import { getAuth, linkWithPopup, OAuthProvider } from "firebase/auth"; const provider = new OAuthProvider('microsoft.com'); const auth = getAuth(); linkWithPopup(auth.currentUser, provider) .then((result) => { // Microsoft credential is linked to the current user. // IdP data available in result.additionalUserInfo.profile. // Get the OAuth access token and ID Token const credential = OAuthProvider.credentialFromResult(result); const accessToken = credential.accessToken; const idToken = credential.idToken; }) .catch((error) => { // Handle error. }); - Web- var provider = new firebase.auth.OAuthProvider('microsoft.com'); firebase.auth().currentUser.linkWithPopup(provider) .then((result) => { // Microsoft credential is linked to the current user. // IdP data available in result.additionalUserInfo.profile. // OAuth access token can also be retrieved: // result.credential.accessToken // OAuth ID token can also be retrieved: // result.credential.idToken }) .catch((error) => { // Handle error. }); 
- É possível usar o mesmo padrão com - reauthenticateWithPopup/- reauthenticateWithRedirect, que pode ser utilizado para recuperar credenciais novas de operações confidenciais que exigem um login recente.- Web- import { getAuth, reauthenticateWithPopup, OAuthProvider } from "firebase/auth"; const provider = new OAuthProvider('microsoft.com'); const auth = getAuth(); reauthenticateWithPopup(auth.currentUser, provider) .then((result) => { // User is re-authenticated with fresh tokens minted and // should be able to perform sensitive operations like account // deletion and email or password update. // IdP data available in result.additionalUserInfo.profile. // Get the OAuth access token and ID Token const credential = OAuthProvider.credentialFromResult(result); const accessToken = credential.accessToken; const idToken = credential.idToken; }) .catch((error) => { // Handle error. }); - Web- var provider = new firebase.auth.OAuthProvider('microsoft.com'); firebase.auth().currentUser.reauthenticateWithPopup(provider) .then((result) => { // User is re-authenticated with fresh tokens minted and // should be able to perform sensitive operations like account // deletion and email or password update. // IdP data available in result.additionalUserInfo.profile. // OAuth access token can also be retrieved: // result.credential.accessToken // OAuth ID token can also be retrieved: // result.credential.idToken }) .catch((error) => { // Handle error. }); 
Autenticar com Firebase em uma extensão do Chrome
Se você estiver criando um aplicativo de extensão do Google Chrome, consulte a Guia de documentos fora da tela.
Próximas etapas
Depois que um usuário faz login pela primeira vez, uma nova conta de usuário é criada e vinculada às credenciais, que podem ser o número do telefone, o nome de usuário e a senha ou as informações do provedor de autenticação. Essa nova conta é armazenada como parte do projeto do Firebase e pode ser usada para identificar um usuário em todos os apps do projeto, seja qual for o método de login utilizado.
- 
Nos apps, a maneira recomendada de saber o status de autenticação do seu usuário é definindo um observador no objeto Auth. É possível, então, receber as informações básicas de perfil do usuário do objetoUser. Consulte Gerenciar usuários.
- Nas Regras de segurança Firebase Realtime Database e Cloud Storage, você pode acessar o ID exclusivo do usuário conectado pela variável - authe usar essas informações para controlar quais dados um usuário pode acessar.
Os usuários podem fazer login no app usando vários provedores de autenticação. Basta vincular as credenciais desses provedores a uma conta de usuário.
Para desconectar um usuário, chame 
signOut:
Web
import { getAuth, signOut } from "firebase/auth"; const auth = getAuth(); signOut(auth).then(() => { // Sign-out successful. }).catch((error) => { // An error happened. });
Web
firebase.auth().signOut().then(() => { // Sign-out successful. }).catch((error) => { // An error happened. });