1. Firebase연결
파이어베이스 홈페이지에 들어가 로그인 후 콘솔로 이동하게 되면 프로젝트가 추가 된 것을 확인 할 수 있습니다.
해당 프로젝트에 들어간 후에 Authentication -> Sign-in method에 이메일/비밀번호를 사용 할 수 있도록 선택 후 저장해줍니다.
File google-servieces.json is missing 오류 해결 방법
빌드를 하면 밑과 같이 오류가 뜰 수 있습니다.
프로젝트 설정에 들어가주세요.
google-services.json 파일을 다운 받아 줍니다.
app폴더에 넣어주시면 끝입니다.
2. 회원가입 xml 파일만들기
Layout폴더에 activity_sign.xml 파일 생성해주시고 밑의 사진과 같이 만들었습니다. 간단히 이메일과 패스워드, 이름만 입력 받도록 하겠습니다.
activity_sign.xml 코드
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textView3"
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_marginTop="120dp"
android:fontFamily="@font/nanumsquareroundb"
android:gravity="center_horizontal"
android:text="회원가입"
android:textSize="40dp"
app:layout_constraintBottom_toTopOf="@+id/editText_email_sign_up"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0" />
<EditText
android:id="@+id/editText_email_sign_up"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="140dp"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
android:hint="email를 입력해주세요"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView3"
tools:layout_editor_absoluteY="280dp" />
<EditText
android:id="@+id/editText_password_sign_up"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
android:hint="password를 입력해주세요"
android:inputType="textPassword"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editText_email_sign_up"
app:layout_constraintVertical_bias="0.075" />
<EditText
android:id="@+id/editText_name_sign_up"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="30dp"
android:hint="이름을 입력해주세요"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editText_password_sign_up" />
<Button
android:id="@+id/btn_sign_up_ok"
android:layout_width="120dp"
android:layout_height="wrap_content"
android:layout_marginTop="40dp"
android:text="가입하기"
app:layout_constraintEnd_toStartOf="@+id/btn_sign_up_back"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editText_name_sign_up" />
<Button
android:id="@+id/btn_sign_up_back"
android:layout_width="120dp"
android:layout_height="wrap_content"
android:layout_marginTop="40dp"
android:layout_marginRight="60dp"
android:text="취소"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editText_name_sign_up" />
</androidx.constraintlayout.widget.ConstraintLayout>
3. 회원가입 class 생성
SignUpActivity를 생성해주고 위에서 만든 회원가입 xml 과 연동시켜줍니다.
class SingUpActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_sign)
}
}
LoginActivity의 onCreate 안에 위 코드를 추가해줍니다. 회원가입 버튼을 누르면 SignUpActivity로 넘어 갈 수 있도록 해줍니다.
btn_sign_up_go.setOnClickListener {
val nextIntent = Intent(this, SingUpActivity::class.java)
startActivity(nextIntent)
}
build.gradle (:app)의 dependencies 안에 코드를 추가 해줍니다.
dependencies {
// Import the BoM for the Firebase platform
implementation platform('com.google.firebase:firebase-bom:26.2.0')
// Declare the dependency for the Firebase Authentication library
// When using the BoM, you don't specify versions in Firebase library dependencies
implementation 'com.google.firebase:firebase-auth-ktx'
}
다음으로 클래스 안에 하단의 코드를 추가해주시고
private lateinit var auth: FirebaseAuth
onCreate안에도 하단의 코드를 추가해주세요.
auth = Firebase.auth
그리고 signinEmail() 함수를 추가해주겠습니다.
회원가입시에 createUserWithEmailAndPassword(email,password) 를 사용해서 사용자를 생성해 준 것입니다.
fun signinEmail(){
auth.createUserWithEmailAndPassword(editText_email_sign_up.text.toString(),editText_password_sign_up.text.toString())
.addOnCompleteListener(this) {
task ->
if(task.isSuccessful){
//Login
Toast.makeText(this,"회원가입이 완료되었습니다.", Toast.LENGTH_LONG).show()
val nextIntent = Intent(this, LoginActivity::class.java)
startActivity(nextIntent)
}
else{
Toast.makeText(this,task.exception?.message, Toast.LENGTH_LONG).show()
//Show the error message
}
}
}
onCreate 안에 가입하기 버튼을 눌렀을시 회원가입이 될 수 있도록 클릭 버튼을 추가해줍니다.
btn_sign_up_ok.setOnClickListener {
signinEmail()
}
그럼 회원가입을 해보겠습니다.
Authentication -> Users 로 들어가보시면 이메일이 추가되어 있는 것을 확인 가능합니다.
socket failed:EPERM(Operation not permitted) 오류 해결 방법
혹시 토스트 메세지로 socket failed:EPERM(Operation not permitted) 이 뜬다면 에뮬레이터에 있는 해당 앱을 삭제하고 다시 설치 하시면 됩니다.
SignUpActivity.kt 코드
package com.example.carrotmarket
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Toast
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.auth.ktx.auth
import com.google.firebase.ktx.Firebase
import kotlinx.android.synthetic.main.activity_sign.*
class SingUpActivity : AppCompatActivity() {
private lateinit var auth: FirebaseAuth
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_sign)
auth = Firebase.auth
btn_sign_up_ok.setOnClickListener {
signinEmail()
}
}
fun signinEmail(){
auth.createUserWithEmailAndPassword(editText_email_sign_up.text.toString(),editText_password_sign_up.text.toString())
.addOnCompleteListener(this) {
task ->
if(task.isSuccessful){
//Login
Toast.makeText(this,"회원가입이 완료되었습니다.", Toast.LENGTH_LONG).show()
val nextIntent = Intent(this, LoginActivity::class.java)
startActivity(nextIntent)
}
else{
Toast.makeText(this,task.exception?.message, Toast.LENGTH_LONG).show()
//Show the error message
}
}
}
}
자세한 내용은 파이어베이스 홈페이지에서 확인 가능합니다.
Android에서 비밀번호 기반 계정으로 Firebase에 인증
Firebase 인증을 사용하여 사용자가 이메일 주소와 비밀번호로 Firebase에 인증하도록 하고, 앱의 비밀번호 기반 계정을 관리할 수 있습니다. 시작하기 전에 아직 추가하지 않았다면 Android 프로젝트
firebase.google.com
'안드로이드 개발 > 중고거래앱 만들기' 카테고리의 다른 글
[Android Kotlin] BottomNavigationView 하단 네이게이션 탭 바 만들기 / 네비게이션 탭 바 배경 색상, 아이콘, 글자 색상 설정 (0) | 2021.02.04 |
---|---|
[Android Kotlin] 코틀린 카카오 로그인 구현하기 (0) | 2021.02.03 |
[Android Kotlin] Firebase 구글 로그인 구현 (0) | 2021.01.29 |
[Android Kotlin] Firebase 로그인 구현 (0) | 2021.01.29 |
[Android Kotlin] 안드로이드 로그인 화면 만들기 (0) | 2021.01.27 |