2017-10-11 3 views
0

Nach der Anmeldung möchte ich die Benutzerinformationen des angemeldeten Benutzers erhalten.Erhalten Sie Benutzerinformationen nach der Anmeldung in Firebase auf Android

Ich habe keine Ahnung, wie es geht.

Hier ist mein Code:

public class Dashboard extends Fragment { 

    FirebaseAuth mFirebaseAuth = FirebaseAuth.getInstance(); 
    FirebaseUser mFirebaseUser = mFirebaseAuth.getCurrentUser(); 

    private DatabaseReference mDatabase; 


    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     View view = inflater.inflate(R.layout.fragment_dashboard, container, false); 

     mDatabase = FirebaseDatabase.getInstance().getReference().child("Chamas").child("Users"); 

     mFirebaseUser.getName(); 
      // User ID 
     mFirebaseUser.getUid(); 
      // Email-ID 
     mFirebaseUser.getEmail(); 
      // User-Profile (if available) 
     mFirebaseUser.getPhone(); 

     return view; 
    } 

Dies überhaupt nicht funktioniert, kann mir jemand bitte helfen

Antwort

1

Sie versuchen Auth Zustand zu verwenden, bevor die App selbst initialisiert, indem sie sie setzen in die Klassendefinition. Dies wird aufgerufen, lange bevor der asynchrone Aufruf zur Überprüfung der Authentifizierungsdaten abgeschlossen wurde.

Wie im Handbuch here erläutert, kann "getCurrentUser auch null zurückgeben, da das auth-Objekt die Initialisierung noch nicht beendet hat."

Es ist ein bisschen schwer zu sagen, was Sie hier wirklich brauchen, da Sie keine Informationen über den Auth-Workflow enthalten haben. Möglicherweise möchten Sie die Benutzerdaten in onStart(), wie in den Beispielen holen gezeigt:

@Override 
public void onStart() { 
    super.onStart(); 
    // Check if user is signed in (non-null) and update UI accordingly. 
    FirebaseUser currentUser = mAuth.getCurrentUser(); 
    updateUI(currentUser); 
} 

Ein weiterer Ansatz ist die Benutzerdaten zu speichern, nachdem Auth ergänzt:

private FirebaseUser user; 

private void firebaseAuthWithGoogle(GoogleSignInAccount acct) { 
    Log.d(TAG, "firebaseAuthWithGoogle:" + acct.getId()); 

    AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null); 

    mAuth.signInWithCredential(credential) 
      .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { 
       @Override 
       public void onComplete(@NonNull Task<AuthResult> task) { 
        if (task.isSuccessful()) { 
         // Sign in success, store user data 
         user = mAuth.getCurrentUser(); 
        } else { 
         // Sign in fails... 
        } 
        // ... 
       } 
      }); 
} 

Ein weiterer Ansatz ist Auth zu überwachen Zustand:

FirebaseUser user; 

@Override 
private void onCreate() { 
    firebaseAuth = FirebaseAuth.getInstance(); 
    new FirebaseAuth.AuthStateListener() { 
     @Override 
     public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { 
     if(firebaseAuth.getCurrentUser() != null) { 
      user = firebaseAuth.getCurrentUser(); 
     } 
     } 
    }; 
} 
Verwandte Themen