0

Android App 이메일/비밀번호, 전화, Google, Facebook, Twitter 등 사용자가 직접 등록 할 수있는 다양한 방법을 사용합니다. 나는 또한 사용자가 자신의 연락처로 서로를 추가 할 수 있기를 바랍니다.Firebase Auth : 이메일 또는 전화 번호로 사용자 받기

내가 이메일을 사용하던 구글 만, 내가 DB에 사용자의 이메일을 저장하고 그들 사이의 관계를 다른 사용자를 식별하고 만들 것을 사용할 수 있기 때문에이 문제를 쉽게 구현할 수 있었던 것입니다 경우.

그러나 지금 문제는 사용자뿐만 아니라 자신의 전화 번호를 사용하여 등록 할 수 있으며, 페이스 북 계정도 전화 번호만을 사용하여 등록 할 수 있다는 점이다. 따라서 이메일을 사용자의 고유 ID로만 사용할 수는 없습니다.

있는 몇 가지 방법 내가 사용자가 연락처로 서로를 추가 할 수 있도록 DB에 고유 한 사용자 ID를 만들어-E 원하는 결과를 얻을 수있는 무엇입니까?

답변

2

전화 당신은이 작업을 수행 할 수 있습니다

FirebaseUser user=FirebaseAuth.getInstance().getCurrentUser(); 

위의 로그인 한 경우 CurrentUser 얻을 것이다

는이 일을 데이터베이스에 자신의 userid을 설정할 수 있습니다.

DatabaseReference st; 
DatabaseReference ref=FirebaseDatabase.getInstance().getReference().child("Users"); 
st= ref.child(user.getUid()); 
st=ref.child("phonenumber").setValue(number); 

연락처의 경우 다음을 수행하십시오.

그래서 상대 노드에서이 사용자가 목록에 추가 한 연락처의 이름의 userid 및 내부있을 것이다.

+0

감사합니다. 그냥 후속 조치. 사용자가 자신의 연락처에 2 명을 추가하려고하고 다른 사람이 자신의 이메일을 제공하고 다른 사람의 전화 번호를 추가한다고 가정 해 봅시다. 모든 사용자를 검색하고 이메일이나 전화 번호가 있는지 확인해야합니까? 아니면 더 좋은 방법이 있습니까? – Aadam

+0

이메일을 가지고 있는지 확인하기 위해 검색 할 수 있습니다. 'orderbyChild ("email"). equalTo (useremail) .addListenerForSingleValueEvent() {...}' –

0

당신은 중포 기지 UID를 사용할 수 있습니다. 간단히 FirebaseAuth.getInstance().getUid();

1

나는 당신이 당신의 질문에 중포 기지 태그 있기 때문에 당신이 당신의 인증에 중포 기지를 사용하는 가정. Firebase 인증은 일반적으로 인증 중에 사용자의 이름을 가져 오므로 등록하는 동안 해당 세부 정보를 가져와 데이터베이스에 추가하고 각 사용자에게 고유 한 ID를 할당 할 수 있습니다. 그런 다음 친구의 ID가 저장 될 시스템의 각 사용자에 대해 친구 노드를 만들 수 있습니다. 가입/로그인의 예는 다음과 같습니다.

FirebaseAuth mAuth = FirebaseAuth.getInstance(); 
mAuth.signInWithCredential(credential) 
       .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { 
        @Override 
        public void onComplete(@NonNull Task<AuthResult> task) { 
         if (task.isSuccessful()) { 
          // Sign in success, get available information 

          final FirebaseUser user = mAuth.getCurrentUser(); 
          if (user != null) { 
           if (user.getEmail() != null) { 
            //since various methods are available, you may want to use names 
            String name = user.getDisplayName(); 
            //if email exists, you can try this 
            user.getEmail(); 
            //otherwise, this is sure to exist but you may want to tell your users 
            //to complete their profiles later 
            user.getUid() 
           } 
          } else { 
           //Notify user 
          } 
         } else { 
          //The whole process failed 

         } 

        } 
       });