728x90
반응형

 

 

간단하게 회원가입과 로그인은 대부분의 앱에서 필요로 합니다.

 

Email 회원가입/로그인은 Firebase에서 지원하고 있으며 기능을 구현해보도록 하겠습니다.

 

우선 Firebase 에 접속합니다.

 

https://console.firebase.google.com

 

로그인 - Google 계정

하나의 계정으로 모든 Google 서비스를 Google 계정으로 로그인

accounts.google.com

 

 

 

Authenfication 으로 들어간 뒤 '로그인 방법' 탭을 클릭합니다.

 

여러가지 로그인 기능이 있는데 이메일/비밀번호 로그인을 사용 설정 합니다.

 

 

 

 

 

 

사용자 탭으로 가보면 아직 사용자 정보가 보여지지 않고 있습니다.

 

정상적으로 로그인을 하면 이 화면에서 사용자가 보여집니다.

 

 

 

 

 

Android Studio 로 돌아가 앱 수준 build.gradle 파일에 

 

Firebase 인증에 대한 종속 항목을 추가합니다.

 

implementation 'com.google.firebase:firebase-auth:16.0.3'
cs

 

 

 

 

activity_main.xml 에 아래와 같이 추가해 주었습니다.

 

<EditText
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:inputType="textEmailAddress"
            android:ems="10"
            android:id="@+id/edit_email"
            android:hint="Email"
            android:layout_marginStart="16dp"
            app:layout_constraintStart_toStartOf="parent"
            android:layout_marginLeft="16dp"
            android:layout_marginEnd="16dp"
            app:layout_constraintEnd_toEndOf="parent"
            android:layout_marginRight="16dp"
            android:layout_marginTop="8dp"
            app:layout_constraintTop_toTopOf="parent"/>
    <EditText
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:inputType="textPassword"
            android:ems="10"
            android:id="@+id/edit_password"
            android:hint="Password"
            android:layout_marginStart="16dp"
            app:layout_constraintStart_toStartOf="parent"
            android:layout_marginLeft="16dp"
            android:layout_marginEnd="16dp"
            app:layout_constraintEnd_toEndOf="parent"
            android:layout_marginRight="16dp"
            android:layout_marginTop="8dp"
            app:layout_constraintTop_toBottomOf="@+id/edit_email"/>
    <Button
            android:text="Button"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:id="@+id/emailLoginBtn"
            android:layout_marginTop="8dp"
            app:layout_constraintTop_toBottomOf="@+id/edit_password"
            app:layout_constraintStart_toStartOf="parent"
            android:layout_marginLeft="16dp"
            android:layout_marginStart="16dp"
            app:layout_constraintEnd_toEndOf="parent"
            android:layout_marginEnd="16dp"
            android:layout_marginRight="16dp"
            android:background="@color/colorPrimary"
            android:textColor="@color/common_google_signin_btn_text_dark_default"/>
cs

 

 

 

 

ConstraintLayout 으로 구성하였고 Design 에 이렇게 보여지게 됩니다.

 

 

 

 

 

RC_SIGN_IN 은 Activity 의 requestCode 를 정해주었고

 

firebaseAuth 객체 변수를 전역으로 선언해 주었습니다.

 

    // Google Login result
    private val RC_SIGN_IN = 9001
 
    // Firebase Auth
    private var firebaseAuth: FirebaseAuth? = null
cs

 

 

 

 

Android 앱에 Google 로그인 통합하기 페이지를 참고해 Google 로그인을 앱에 통합

 

아래와 같이 GoogleSignInOptions 객체를 구성할 때 requestIdToken을 호출합니다.

 

구글 버튼이 클릭이 되면 구글 계정 인증 Activity가 보여지게 됩니다.

 

 

 

 

테스트이기 때문에 버튼을 한곳에 두어 진행하였고 응용하셔서 수정하시기 바랍니다.

 

    // [START onCreate]
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
 
        firebaseAuth = FirebaseAuth.getInstance();
 
        googleLoginBtn.setOnClickListener {
            // 회원가입 또는 로그인 함수 호출부
        }
    }
    // [END onCreate]
cs

 

 

 

 

Email 사용자 생성 함수 입니다.

 

신규 사용자의 이메일 주소와 비밀번호를 createUserWithEmailAndPassword 에 전달하여 신규 계정을 생성합니다.

 

getCurrentUser 메소드를 사용하여 사용자의 계정 데이터를 가져올 수 있습니다.

 

     // EmailCreate
    private fun createEmail(){
        firebaseAuth!!.createUserWithEmailAndPassword(edit_email.text.toString(), edit_password.text.toString())
            .addOnCompleteListener(this) {
                if (it.isSuccessful) {
                    // Sign in success, update UI with the signed-in user's information
                    val user = firebaseAuth?.currentUser
                    Toast.makeText(this"Authentication success.",Toast.LENGTH_SHORT).show()
                } else {
                    // If sign in fails, display a message to the user.
                    Toast.makeText(this"Authentication failed.",Toast.LENGTH_SHORT).show()
                }
            }
    }
cs

 

 

 

Email 사용자 로그인 확인 함수 입니다.

 

사용자가 앱에 로그인하면 사용자의 이메일 주소와 비밀번호를 signInWithEmailAndPassword 에 절달합니다.

 

getCurrentUser 메소드를 사용하여 계속 진행할 수 있습니다.

 

    // Email SignIn
    private fun loginEmail(){
        firebaseAuth!!.signInWithEmailAndPassword(edit_email.text.toString(), edit_password.text.toString())
            .addOnCompleteListener(this) {
                if (it.isSuccessful) {
                    // Sign in success, update UI with the signed-in user's information
                    Toast.makeText(this"signInWithEmail success.",Toast.LENGTH_SHORT).show()
                    val user = firebaseAuth?.currentUser
                } else {
                    // If sign in fails, display a message to the user.
                    Toast.makeText(this"signInWithEmail failed.",Toast.LENGTH_SHORT).show()
                }
            }
    }
cs

 

 

 

정상적으로 로그인이 되었다면 Firebase 사용자 탭으로 이동해 보겠습니다.

 

아래와 같이 사용자 정보가 추가되어있다면 잘 적용된 것입니다.

 

 

 

 

 

사용자를 로그아웃시키려면 signOut을 호출하면 됩니다.

    FirebaseAuth.getInstance().signOut();
cs

 

728x90
반응형

+ Recent posts