Firebase 기능을 이용해 회원가입과 로그인을 구현해본다.
[ Android Studio - Java ]
[ Firebase]
Firebase 연동
Firebase 프로젝트 생성 및 안드로이드 스튜디오와의 연결은 이전에도 다룬 적 있기에 간략히만 설명하고 넘어간다.
Firebase에서 로그인을 한 후, 새로운 프로젝트를 만들기를 눌러준다.
프로젝트 생성을 위해 입력해야하는 몇가지 단계를 따라가면 간단하게 생성 완료할 수 있다.
(프로젝트 이름은 본인 마음대로 설정해주면 된다)
프로젝트 생성 후, 해당 프로젝트에 들어가면 프로젝트 이름 밑에 앱 추가 버튼이 있는데
여기서 나는 안드로이드 기반 어플을 만들것이기때문에 안드로이드를 선택해주었다.
그러면 Android 앱에 Firebase 추가 창이 뜨는데 각각 알맞은 값들을 입력하면 된다.
- Android 패키지 이름
- 앱 닉네임 (내 맘대로 생성)
- SHA-1 인증
+) SHA-1인증 값은 Android Studio -> Gradle -> Tasks -> android -> signingRepost 를 눌러 들어가면 찾을 수 있다.
각각의 값을 입력한 후, 제공되는 파일을 다운받아 안드로이드 스튜디오의 해당 프로젝트에서 Android -> Project로 바꾼 후, app 폴더안에 넣어준다. 나머지는 또 시키는 대로 따라 SDK 추가를 진행하면 앱 등록이 끝난다.
+) SDK 추가 과정에서 루트 단위의 gradle에 적용한 내용에서 오류가 발생할 수 있다.
최신 버전의 android studio일 경우 그럴 수 있는데, 이때 해당 내용을 settings.gradle에 넣어주면 오류가 사라진다.
Firebase Authentication
https://firebase.google.com/docs/auth?authuser=0&hl=ko
Firebase 인증
Firebase 인증을 사용하면 코드 몇 줄만으로 손쉬운 사용자 인증, 로그인, 온보딩을 위한 엔드 투 엔드 ID 솔루션을 앱에 추가할 수 있습니다.
firebase.google.com
Firebase 인증은 앱에서 사용자 인증 시 필요한 백엔드 서비스를 제공하며, 전화번호/비밀번호/이메일/인기 제휴 ID 공급업체 등을 통해 인증이 지원된다.
사용자로부터 인증 정보(사용자 이메일/비밀번호, 제휴 ID 공급업체에서 받은 OAuth 토큰 등)를 받고,
이 정보를 Firebase 인증 SDK로 전달한 다음 Firebas의 백엔드 서비스가 정보를 확인해 클라이언트에 응답을 반환하는 원리이다.
앞서 Firebase와 Android Studio를 연결했으니 이제 Firebase의 인증(Authentication) 섹션으로 들어가 로그인 방법을 설정한다.
나는 여기서 이메일/비밀번호 로그인 방법을 선택하였다.
이때, 이 방법을 사용하면 abc@abcabc.com 과 같은 존재하지 않는 이메일로도 가입이 가능하다. 이메일 인증을 통한 로그인은 다음에 다루기로 하고 우선 해당 방법을 사용한다.
1. 앱 수준의 모듈 Gradle 파일에서 Firebase 인증 Android 라이브러리 종속 항목을 추가한다.
dependencies {
implementation platform('com.google.firebase:firebase-bom:31.4.0')
implementation 'com.google.firebase:firebase-auth'
}
+) BoM을 사용하면 Firebase 라이브러리의 버전을 구체화하지 않아도 된다.
2. onCreate 메서드에서 FirebaseAuth 객체의 공유 인스턴스 가져와 초기화하고 사용자 로그인 여부 확인
private FirebaseAuth firebaseAuth;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.___);
firebaseAuth = FirebaseAuth.getInstance();
}
@Override
public void onStart() {
super.onStart();
FirebaseUser currentUser = firebaseAuth.getCurrentUser();
if (currentUser != null) {
reload();
}
}
3. createUserWithEmailAndPassword 이용하여 신규 사용자의 이메일과 비밀번호 계정 생성
mAuth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(___Activity.this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
FirebaseUser user = mAuth.getCurrentUser();
updateUI(user);
} else {
Toast.makeText(EmailPasswordActivity.this, "Authentication failed.",
Toast.LENGTH_SHORT).show();
updateUI(null);
}
}
});
4. 로그인 작업의 onCreate 메서드에서 FirebaseAuth 객체의 공유 인스턴스 가져와 초기화하고 로그인 여부 확인
5. 사용자가 앱에 로그인하면 signInWithEmailAndPassword에 사용자 이메일과 비밀번호 전달
mAuth.signInWithEmailAndPassword(email, password)
.addOnCompleteListener(___Activity.this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
FirebaseUser user = mAuth.getCurrentUser();
updateUI(user);
} else {
Toast.makeText(EmailPasswordActivity.this, "Authentication failed.",
Toast.LENGTH_SHORT).show();
updateUI(null);
}
}
});
6. 사용자가 처음 로그인하면 신규 계정이 생성되고 사용자 인증정보에 연결된다.
FirebaseUser 객체를 이용해 사용자 프로필 정보를 가져올 수 있고, Firebase realtime bd, Stroage 보안 규칙의 auth 변수에서
로그인한 사용자 ID를 가져온 후 이 ID를 통해서 데이터 액세스, 관리가 가능하다.
7. signOut을 이용해 로그아웃 가능
FirebaseAuth.getInstance().signOut();
Firebase FireStore
https://firebase.google.com/docs/firestore/quickstart?hl=ko
Cloud Firestore 시작하기 | Firebase
5월 10일, Google I/O에서 Firebase가 돌아옵니다. 지금 등록하기 의견 보내기 Cloud Firestore 시작하기 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 이 빠른 시작에
firebase.google.com
유연하고 확장 가능한 NoSQL 클라우드 데이터베이스를 사용해 클라이언트 및 서버 측 개발에 사용되는 데이터를 저장하고
실시간 리스너를 통해 클라이언트 애플리케이션 간에 데이터의 동기화를 유지하고 오프라인 개발을 지원한다.
데이터 모델에 따라 값에 매핑되는 필드를 포함하는 문서에 데이터가 저장되고 이 문서는 데이터 정리와 쿼리에 사용 가능한
컬렉션에 저장된다. 문서 내에서 하위 컬렉션을 만들어 계층적 데이터 구조를 만들 수 있다.
우선, 만약 Firestore 프로젝트가 만들어지지 않았다면 Console에서 firestore 프로젝트를 만들어주고 보안 규칙을 설정한 뒤
구현을 시작한다.
1. 앱 수준의 모듈 Gradle 파일에서 Firebase Firestore 라이브러리 종속 항목을 선언
implementation 'com.google.firebase:firebase-firestore'
2. Firestore 인스턴스 초기화
FirebaseFirestore db = FirebaseFirestore.getInstance();
3. Firestore에 데이터 추가
db.collection("____").document(firebaseUser.getUid()).set(____)
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void unused) {
Toast.makeText(getApplicationContext(), "회원정보 등록 성공", Toast.LENGTH_SHORT).show();
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(getApplicationContext(), "회원정보 등록 실패", Toast.LENGTH_SHORT).show();
}
});
위에서 설명한 Firebase Authentication, Firestore를 이용해 사용자 회원가입을 진행하고 회원정보를 DB에 저장, 관리할 수 있다.
'Android' 카테고리의 다른 글
[Android] Intent Flag (0) | 2023.04.27 |
---|---|
[Android] CheckBox 와 RadioButton (0) | 2023.04.27 |
[Android] Naver Map API 사용해보기 (2) Geocoding (0) | 2022.07.28 |
[Android] Naver Map API 사용해보기 (1) (0) | 2022.07.28 |
[Android] Firebase로 OCR 사용해보기 (2) (0) | 2022.07.11 |