[Kotlin] Firebase를 이용한 익명 사용자 로그인

이상목·2024년 5월 30일
0

Kotlin

목록 보기
14/20

오늘은 코틀린 앱에서 firebase를 이용하여 익명 사용자 로그인 구현을 해보겠습니다 !
벨로그 서버 이슈로 .. 저장이 되지 않아 날라가서 다시 작성하는건 안비밀 ..

1. Firebase 프로젝트 생성

1-1. Firebase URL

  • 구글에 firebase console을 검색 후 들어갑니다.

1-2. 프로젝트 추가 버튼

  • 프로젝트 버튼추가 버튼을 클릭합니다.

1-3. 프로젝트 만들기

1단계 - 프로젝트 이름 설정

  • 문자, 숫자, 공백과 다음 문자(- ! ' ")만 포함할 수 있습니다.

2단계 - 애널리틱스 설정

  • 애널리틱스는 정보 수집 및 트래픽 관리 등을 하는데 용이하므로 체크했습니다.

3단계 - 애널리틱스 구성

  • 계정이 없다면 생성하여 지정해줍니다.
  • 프로젝트 만들기 버튼을 클릭하면 프로젝트가 생성됩니다.



2. Firebase 프로젝트 설정

2-1. OS 선택

  • OS에 따라 Firebase를 연동할 수 있습니다.
  • 필자는 코틀린을 이용한 앱을 생성할 예정이므로 Android로 진행하겠습니다.

2-2. Android 앱에 Firebase 추가

1단계 - 앱 등록

  • 패키지 이름에는 내 프로젝트에 생성한 패키지 명을 기입해줍니다.
  • 아래 앱 닉네임과 디버그 서명 인증서는 선택사항으로 패스하고 앱 등록 버튼을 눌러줍니다.

2단계 - 구성 파일 다운로드 후 추가

  • google-services.json 파일을 다운로드 합니다.
  • 위 설명과 같이 프로젝트 상위 app 디렉토리 내에 다운받은 google-services.json 파일을 넣습니다.
  • 만약 app 디렉토리가 없다면 루트 수준을 Default로 설정된 Android -> Project로 변경합니다. 그런 후 app 하위에 넣으면 됩니다.

3단계 - Firebase SDK 추가

  • Kotlin에서 사용하기에 Kotlin DSL을 선택해주고 생성한 Android project로 돌아와서 build.gradle.kts (Project)와 (Module)에 코드를 붙여넣습니다.

예시

build.gradle.kts(Project)

// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
    alias(libs.plugins.androidApplication) apply false
    alias(libs.plugins.jetbrainsKotlinAndroid) apply false

    // firebase
    id("com.google.gms.google-services") version "4.4.1" apply false
}

build.gradle.kts(Module)

plugins {
    alias(libs.plugins.androidApplication)
    alias(libs.plugins.jetbrainsKotlinAndroid)

    // firebase
    id("com.google.gms.google-services")
}

ependencies {
    // firebase bom
    implementation(platform("com.google.firebase:firebase-bom:33.0.0"))
    // firebase analytics
    implementation("com.google.firebase:firebase-analytics")
    // firebase auth
    implementation("com.google.firebase:firebase-auth-ktx")

    implementation(libs.androidx.core.ktx)
    implementation(libs.androidx.appcompat)
}
  • 이렇게 SDK를 추가해준 후 Sync now를 클릭하여 Gradle 파일을 업데이트 합니다.
  • 그럼 Firebase와 프로젝트 간 동기화가 완료되었습니다.



3. Android 프로젝트 구성

3-1. main Activity layout 구성

<?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:id="@+id/main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/anonymousLoginBtn"
        android:text="login"
        android:textSize="50dp"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</androidx.constraintlayout.widget.ConstraintLayout>
  • 익명으로 로그인하는 버튼 하나만을 가지고 테스트만 해보기 위해 버튼 하나만을 추가해주었습니다.

3-2. MainActivity 구성

package com.sangmoki.fb_anonymous_login

import android.os.Bundle
import android.util.Log
import android.widget.Button
import android.widget.Toast
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import com.google.firebase.auth.FirebaseAuth

class MainActivity : AppCompatActivity() {

    // Firebase 인증 객체 생성
    private lateinit var auth: FirebaseAuth

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        enableEdgeToEdge()
        setContentView(R.layout.activity_main)

        // Firebase 인증 객체 초기화
        auth = FirebaseAuth.getInstance()

        val loginBtn = findViewById<Button>(R.id.anonymousLoginBtn)
        loginBtn.setOnClickListener {

            // 익명 사용자 로그인 실행
            auth.signInAnonymously()
                .addOnCompleteListener(this) { task ->

                    // 로그인이 성공했을 때
                    if (task.isSuccessful) {
                        val user = auth.currentUser

                        // 로그인이 성공한 경우 사용자의 uid를 로그에 출력
                        Log.d("MainActivity", user!!.uid)

                    // 실패한 경우
                    } else {
                        // If sign in fails, display a message to the user.
                        Toast.makeText(
                            baseContext,
                            "Authentication failed.",
                            Toast.LENGTH_SHORT,
                        ).show()
                    }
                }

        }
    }

}
  1. 처음 컴파일 시점에서 FirebaseAuth를 호출하여 인증 객체를 생성합니다.
  2. Main 액티비티가 실행되고 Firebase 인증 객체를 초기화합니다.
  3. 로그인 버튼을 글릭하면 익명 사용자 로그인이 실행되어 if 조건을 통해 성공할 시 log에 사용자 uid 정보를 출력합니다.
  • Firebase 라이브러리 사용법은 구글에 검색하면 나옵니다.


예시



4. 실행 화면

4-1. 버튼



4-2. 클릭 결과


4-3. Firebase 활성 사용자 수

  • 빌드 -> Authentication 에 들어가면 다음과 같이 사용할 수 있습니다.



이로써 코틀린 앱에서 Firebase를 이용한 익명 로그인을 구현해 보았습니다.

profile
기록은 기억을 지배한다.

0개의 댓글