728x90
반응형
오류 상황:
파이어베이스 구글 로그인 후, main activity로 넘어갈 때 앱이 종료됨
logcat을 확인해보니 메인에 위치한 프레그먼트
firebaseUser = firebaseAuth.getCurrentUser에서 on null object reference 라는 오류발생
오류 원인:
파이어베이스 리얼타임 데이터베이스에 연결하지 않음
오류 해결:
로그인 액티비티 firebaseAuthWithGoogle()에 다음과 같이 코드를 추가
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | private void firebaseAuthWithGoogle(GoogleSignInAccount account) { AuthCredential credential = GoogleAuthProvider.getCredential(account.getIdToken(), null); mAuth.signInWithCredential(credential) .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()){ DLog.d("signInWithCredential: success"); final FirebaseUser firebaseUser = mAuth.getCurrentUser(); final User user = new User(); user.setEmail(firebaseUser.getEmail()); user.setName(firebaseUser.getDisplayName()); user.setUid(firebaseUser.getUid()); if (firebaseUser.getPhotoUrl() != null){ user.setProfileUrl(firebaseUser.getPhotoUrl().toString()); } mDBReference.child(firebaseUser.getUid()).addListenerForSingleValueEvent(new ValueEventListener() { @Override public void onDataChange(@NonNull DataSnapshot dataSnapshot) { if (! dataSnapshot.exists()){ mDBReference.child(firebaseUser.getUid()).setValue(user, new DatabaseReference.CompletionListener() { @Override public void onComplete(@Nullable DatabaseError databaseError, @NonNull DatabaseReference databaseReference) { if (databaseError == null){ //DLog.d("DB에러없음"); Toast.makeText(LoginActivity.this, "DB에러없음", Toast.LENGTH_LONG).show(); }else{ DLog.w("DB 에러 발생"); } startActivity(new Intent(LoginActivity.this, MainActivity.class)); finish(); Bundle eventBundle = new Bundle(); eventBundle.putString("email", firebaseUser.getEmail()); mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.LOGIN, eventBundle); } }); } } @Override public void onCancelled(@NonNull DatabaseError databaseError) { } }); updateUI(firebaseUser); }else { DLog.w("signInWithCredential: failure"); updateUI(null); } } }); } | cs |
728x90
반응형
'Mobile App 개발 > Java, 안드로이드 스튜디오' 카테고리의 다른 글
파이어베이스 로그인 오류2 (0) | 2019.02.18 |
---|---|
on null object reference 오류 (0) | 2019.02.18 |
Error: Program type already present: android.support.design.widget.CoordinatorLayout$Behavior (0) | 2019.02.18 |