user - usuario administrador firebase




Adicionar detalhes extras na tabela de usuários do Firebase (6)

Estou trabalhando em um aplicativo firebase + angularjs e usando a autenticação simples de e-mail e senha e está funcionando corretamente.

Só estou imaginando se posso adicionar dados extras do usuário na tabela de usuários que está sendo usada pelo email do firebase + autenticação da senha, como se eu quisesse adicionar informações de cobrança e outros detalhes sobre o usuário sem criar um nó / tabela extra no firebase para armazenar esses dados extras.


A resposta de Frank é boa, mas as coisas são um pouco diferentes em Angular6 / Firebase5 / Angularfire5:

Aqui está o meu manipulador de cliques para entrar em um usuário:

this.afAuth.auth.signInWithPopup(new firebase.auth.GoogleAuthProvider()).then((e) => {
      console.log("Log-In Success" + e.additionalUserInfo.profile.name);
      if (e.additionalUserInfo.isNewUser)
        this.addUserToDatabase(/*...*/);
    }).catch((error) => {
      console.log("Log-In Error: Google Sign-In failed");
    });

Aqui está uma versão rápida. Sua estrutura de usuário ("tabela") é como

--users:
-------abc,[email protected],com:
---------------email:[email protected]
---------------name: userName
etc.

Depois de passar a autenticação FIRAuth.auth()?.createUser você pode definir os usuários no banco de dados como abaixo:

        let ref = FIRDatabase.database().reference()
        let rootChild = ref.child("users")
        let changedEmailChild = u.email?.lowercased().replacingOccurrences(of: ".", with: ",", options: .literal, range: nil) // Email doesn't support "," firebase doesn't support "."
        let userChild = rootChild.child(changedEmailChild!)
        userChild.child("email").setValue(u.email)
        userChild.child("name").setValue(signup.name)

NOTA: Este método funciona apenas se você estiver usando o Firebase Admin SDK e precisar ter um ponto final no servidor para gerenciar tokens personalizados

O Firebase Admin SDK tem uma opção para criar tokens personalizados com objeto de declarações adicionais, que podem conter dados arbitrários. Isso pode ser útil para armazenar algumas informações relacionadas ao usuário, como o usuário premium ou não.

Dados adicionais de declarações podem ser acessados ​​usando o objeto auth .

exemplo

var uid = "some-uid"; //this can be existing user UID
var additionalClaims = {
   premiumAccount: true,
   some-user-property: 'some-value'
};

admin.auth().createCustomToken(uid, additionalClaims)
  .then(function(customToken) {
     // Send token back to client
  })
  .catch(function(error) {
     console.log("Error creating custom token:", error);
});

additionalClaims também estão acessíveis nas regras de segurança do Firebase.

para obter mais informações, leia Tokens personalizados do Firebase


O Firebase armazena os usuários de email / senha em um local separado, ao qual você não tem acesso direto. Você não pode expandir os dados neste local.

Como muitos desenvolvedores de aplicativos desejam acessar os dados do usuário em seu código de aplicativo, é uma prática comum armazenar todos os usuários no nó /users dentro do próprio banco de dados do aplicativo. A desvantagem é que você deve fazer isso sozinho. Mas o lado positivo disso é que você pode armazenar qualquer informação extra, se quiser.

Consulte o guia do Firebase sobre armazenamento de dados do usuário para obter um código de amostra. De lá:

var ref = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com");
ref.onAuth(function(authData) {
  if (authData && isNewUser) {
    // save the user's profile into Firebase so we can list users,
    // use them in Security and Firebase Rules, and show profiles
    ref.child("users").child(authData.uid).set({
      provider: authData.provider,
      name: getName(authData)
    });
  }
});

Observe que o método foi alterado na v4.0.0. Portanto, você precisa usar o código abaixo para recuperar o perfil do usuário:

afAuth.authState.subscribe((user: firebase.User) => { 
  this.displayName = user.displayName;
  this.email = user.email;
  this.photoURL = user.photoURL;
});

Um usuário do Firebase possui um conjunto fixo de propriedades básicas - um ID exclusivo, um endereço de e-mail primário, um nome e um URL da foto - armazenados no banco de dados do usuário do projeto, que podem ser atualizados pelo usuário (iOS, Android, web). Você não pode adicionar outras propriedades diretamente ao objeto Usuário do Firebase; em vez disso, você pode armazenar as propriedades adicionais no seu banco de dados Firebase Realtime.





firebase-authentication