기타/기타 잡다한 것들

[FireBase] 로그인 인터페이스 리스너 사용하기

제주도소년 2018. 8. 22. 21:02

파이어베이스에서는 싱글톤패턴을 이용하기 때문에 로그아웃을 하지 않으면 계속 인증이 되어 있는 상태이다.

인증이 되어있는데 매번 인증을 받으면 정말 불편하기 때문에, 인증이 되어있을 때 로그인화면에서 인증을 거치지 않고 메인으로 바로 이동하려면 OnConnectionFailedListener 를 사용하면 된다.

그 전에 나의 앱에서는 인증이 되어있는 상태이고, 메소드 안에 firebaseAuth.getCurrentUser() 를 통해 유저의 정보를 가져온다. 그 정보를 가져와서 null 이 아니라면 바로 메인 엑티비티로 이동하게 된다.



0. 먼저 멤버 변수를 선언해 준다.

1
private FirebaseAuth.AuthStateListener authStateListener;
cs


1. 리스너를 사용하기 위해 인터페이스를 상속받는다.

1
public class Login extends AppCompatActivity implements GoogleApiClient.OnConnectionFailedListener
cs



2. 메인(onCreate)안 해당 소스코드를 넣어준다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//로그인 인터페이스 리스너
        authStateListener = new FirebaseAuth.AuthStateListener() {
            @Override
            public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
                FirebaseUser user = firebaseAuth.getCurrentUser();
                if (user != null) {
                    //로그인 하면 메인 엑티비티로 이동
                    Intent intent = new Intent(Login.this, MainActivity.class);
                    startActivity(intent);
                    finish();
//                    System.out.print("여기까지 로그인 되면 로그인 완료");
                } else {
                    //로그아웃 상태
                }
            }
        };
cs



3. onCreate 밖에 해당 소스코드를 넣어준다.

1
2
3
4
5
6
7
8
9
10
11
12
13
//로그인 한 상태라면 리스너를 불러서
    //해당 리스터의 내용을 실행하는데
    //authStateListener 안에는 인텐트가 담겨있다.
    @Override
    protected void onStart() {
        super.onStart();
        mAuth.addAuthStateListener(authStateListener);
    }
    @Override
    protected void onStop(){
        super.onStop();
        mAuth.removeAuthStateListener(authStateListener);
    }
cs