간단하게 회원가입과 로그인은 대부분의 앱에서 필요로 합니다.
Email 회원가입/로그인은 Firebase에서 지원하고 있으며 기능을 구현해보도록 하겠습니다.
우선 Firebase 에 접속합니다.
https://console.firebase.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 |
'프로그래밍 > Android' 카테고리의 다른 글
[Kotlin] EditText addTextChangedListener 람다 (0) | 2019.03.21 |
---|---|
Button 디자인 Radius 속성 (0) | 2019.03.21 |
[Kotlin] Firebase com.google.android.gms:play-services-measurement-base is being requested by various other libraries 오류 (0) | 2019.03.19 |
[Kotlin] Firebase Google 로그인 (4) | 2019.03.19 |
Android 디버그 서명 인증서 SHA-1 확인 (0) | 2019.03.19 |