O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

Autenticar usando Microsoft e C++

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

Você pode permitir que seus usuários se autentiquem com o Firebase usando provedores OAuth, como o Microsoft Azure Active Directory, integrando o login OAuth genérico baseado na Web em seu aplicativo usando o SDK do Firebase para realizar o fluxo de login de ponta a ponta. Como esse fluxo requer o uso dos SDKs do Firebase baseados em telefone, ele só é compatível com as plataformas Android e Apple.

Antes de você começar

  1. Adicione o Firebase ao seu projeto C++ .
  2. No console do Firebase , abra a seção Auth .
  3. Na guia Método de entrada, habilite o provedor da Microsoft .
  4. Adicione o ID do cliente e o segredo do cliente do console do desenvolvedor desse provedor à configuração do provedor:
    1. Para registrar um cliente Microsoft OAuth, siga as instruções em Início rápido: registrar um aplicativo com o ponto de extremidade v2.0 do Azure Active Directory . Observe que esse ponto de extremidade dá suporte à entrada usando contas pessoais da Microsoft, bem como contas do Azure Active Directory. Saiba mais sobre o Azure Active Directory v2.0.
    2. Ao registrar aplicativos com esses provedores, certifique-se de registrar o domínio *.firebaseapp.com do seu projeto como o domínio de redirecionamento do seu aplicativo.
  5. Clique em Salvar .

Acesse a classe firebase::auth::Auth

A classe Auth é o gateway para todas as chamadas de API.
  1. Adicione os arquivos de cabeçalho Auth e App:
    #include "firebase/app.h"
    #include "firebase/auth.h"
    
  2. Em seu código de inicialização, crie uma classe firebase::App .
    #if defined(__ANDROID__)
      firebase::App* app =
          firebase::App::Create(firebase::AppOptions(), my_jni_env, my_activity);
    #else
      firebase::App* app = firebase::App::Create(firebase::AppOptions());
    #endif  // defined(__ANDROID__)
    
  3. Adquira a classe firebase::auth::Auth para seu firebase::App . Há um mapeamento um para um entre App e Auth .
    firebase::auth::Auth* auth = firebase::auth::Auth::GetAuth(app);
    

Gerencie o fluxo de login com o SDK do Firebase

Para lidar com o fluxo de login com o SDK do Firebase, siga estas etapas:

  1. Construa uma instância de um FederatedOAuthProviderData configurado com o ID do provedor apropriado para a Microsoft.

    firebase::auth::FederatedOAuthProviderData
        provider_data(firebase::auth::MicrosoftAuthProvider::kProviderId);
    
  2. Opcional : especifique parâmetros OAuth personalizados adicionais que você deseja enviar com a solicitação OAuth.

    // Prompt user to re-authenticate to Microsoft.
    provider_data.custom_parameters["prompt"] = "login";
    
    // Target specific email with login hint.
    provider_data.custom_parameters["login_hint"] =
        "user@firstadd.onmicrosoft.com";
    

    Para os parâmetros suportados pela Microsoft, consulte a documentação do Microsoft OAuth . Observe que você não pode passar parâmetros obrigatórios do 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 entrem no aplicativo, o nome de domínio amigável do locatário do Azure AD ou o identificador GUID do locatário pode ser usado. Isso pode ser feito especificando o campo "inquilino" no objeto de parâmetros personalizados.

    // 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".
    provider_data.custom_parameters["tenant"] ="TENANT_ID";
    
  3. Opcional : especifique escopos adicionais do OAuth 2.0 além do perfil básico que você deseja solicitar ao provedor de autenticação.

    provider_data.scopes.push_back("mail.read");
    provider_data.scopes.push_back("calendars.read");
    

    Para saber mais, consulte a documentação de permissões e consentimento da Microsoft .

  4. Depois que os dados do seu provedor forem configurados, use-os para criar um FederatedOAuthProvider.

    // Construct a FederatedOAuthProvider for use in Auth methods.
    firebase::auth::FederatedOAuthProvider provider(provider_data);
    
  5. Autentique-se com o Firebase usando o objeto do provedor Auth. Observe que, diferentemente de outras operações do FirebaseAuth, isso assumirá o controle da sua interface do usuário, exibindo uma visualização da Web na qual o usuário pode inserir suas credenciais.

    Para iniciar o fluxo de login, chame signInWithProvider :

    firebase::Future<firebase::auth::SignInResult> result =
      auth->SignInWithProvider(provider_data);
    

    Seu aplicativo pode aguardar ou registrar um retorno de chamada no Future .

    Usando o token de acesso OAuth, você pode chamar a API do Microsoft Graph .

    Ao contrário de outros provedores compatíveis com o Firebase Auth, a Microsoft não fornece um URL de foto e, em vez disso, os dados binários de uma foto de perfil precisam ser solicitados por meio da API do Microsoft Graph .

  6. Embora os exemplos acima se concentrem em fluxos de entrada, você também pode vincular um provedor do Microsoft Azure Active Directory a um usuário existente usando LinkWithProvider . Por exemplo, você pode vincular vários provedores ao mesmo usuário, permitindo que eles entrem com qualquer um deles.

    firebase::Future<firebase::auth::SignInResult> result = user->LinkWithProvider(provider_data);
    
  7. O mesmo padrão pode ser usado com ReauthenticateWithProvider que pode ser usado para recuperar novas credenciais para operações confidenciais que exigem login recente.

    firebase::Future<firebase::auth::SignInResult> result =
      user->ReauthenticateWithProvider(provider_data);
    

    Seu aplicativo pode aguardar ou registrar um retorno de chamada no Future .

Próximos passos

Depois que um usuário entra pela primeira vez, uma nova conta de usuário é criada e vinculada às credenciais, ou seja, o nome de usuário e a senha, o número de telefone ou as informações do provedor de autenticação com as quais o usuário fez login. Essa nova conta é armazenada como parte do seu projeto do Firebase e pode ser usada para identificar um usuário em todos os aplicativos do projeto, independentemente de como o usuário faça login.

  • Nos seus aplicativos, você pode obter as informações básicas do perfil do usuário no objeto firebase::auth::User :

    firebase::auth::User* user = auth->current_user();
    if (user != nullptr) {
      std::string name = user->display_name();
      std::string email = user->email();
      std::string photo_url = user->photo_url();
      // The user's ID, unique to the Firebase project.
      // Do NOT use this value to authenticate with your backend server,
      // if you have one. Use firebase::auth::User::Token() instead.
      std::string uid = user->uid();
    }
    
  • Nas regras de segurança do Firebase Realtime Database e do Cloud Storage , você pode obter o ID de usuário exclusivo do usuário conectado a partir da variável de auth e usá-lo para controlar quais dados um usuário pode acessar.

Você pode permitir que os usuários façam login no seu aplicativo usando vários provedores de autenticação vinculando as credenciais do provedor de autenticação a uma conta de usuário existente.

Para desconectar um usuário, chame SignOut() :

auth->SignOut();