경험의 기록

2021.04.11 - [안드로이드/기본] - [Android] 파이어베이스 연결 후 로그인 구현하기

 

[Android] 파이어베이스 연결 후 로그인 구현하기

1. 파이어베이스와 프로젝트 연결하기 firebase.google.com/?hl=ko Firebase Firebase는 고품질 앱을 빠르게 개발하고 비즈니스를 성장시키는 데 도움이 되는 Google의 모바일 플랫폼입니다. firebase.google.com..

hanyeop.tistory.com

파이어베이스가 연결되어 있지 않다면 연결해야한다.


사용해보기

developers.facebook.com/?locale=ko_KR

 

Facebook for Developers

Facebook for Developers와 사용자를 연결할 수 있는 코드 인공 지능, 비즈니스 도구, 게임, 오픈 소스, 게시, 소셜 하드웨어, 소셜 통합, 가상 현실 등 다양한 주제를 둘러보세요. 개발자를 교육하고 연

developers.facebook.com

페이스북 개발자 페이지에 접속해준다.

 

 

로그인 후 내앱 -> 앱 만들기

 

 

만든 후 대시보드 -> Facebook 로그인

 

 

안드로이드 클릭

 

 

1번은 생략해주고

2번에서

 

Project의 gradle 

mavenCentral() 

추가

 

Module의 gradle

implementation 'com.facebook.android:facebook-android-sdk:[4,5)'

추가

 

3번에서

패키지 이름 추가

 

앱을 등록하지 않아서 발생하는 오류로 패키지 이름 사용 클릭

 

private fun getHashKey() {
        var packageInfo: PackageInfo? = null
        try {
            packageInfo =
                packageManager.getPackageInfo(packageName, PackageManager.GET_SIGNATURES)
        } catch (e: PackageManager.NameNotFoundException) {
            e.printStackTrace()
        }
        if (packageInfo == null) Log.e("KeyHash", "KeyHash:null")
        for (signature in packageInfo!!.signatures) {
            try {
                val md = MessageDigest.getInstance("SHA")
                md.update(signature.toByteArray())
                Log.d(
                    "KeyHash",
                    Base64.encodeToString(md.digest(), Base64.DEFAULT)
                )
            } catch (e: NoSuchAlgorithmException) {
                Log.e(
                    "KeyHash",
                    "Unable to get MessageDigest. signature=$signature",
                    e
                )
            }
        }
    }

4번에서 해시를 추가해주어야 하는데,

이 코드를 붙여넣고 onCreate() 에서 호출해주면 해시를 알 수 있다.

 

알아낸 해시 값을

추가해준다.

 

5번 허가해준다.

 

 

 

6번에서 하라는 대로 다 추가해준다.

 

파이어베이스 콘솔로 돌아와서

리디렉션값을 복사하여

 

추가해준다.

 

기본설정으로 와서 앱ID와 시크릿코드를 복사하여

파이어베이스에서 넣어준다.

 

이제 액티비티로 와서

var callbackManager : CallbackManager? = null

페이스북에서의 결과값을 받아올 콜백메소드 선언해준다.

 

callbackManager = CallbackManager.Factory.create()

onCreate()에서 생성

 

callbackManager?.onActivityResult(requestCode,resultCode,data)

onActivityResult 에 추가해준다.

 

 

fun facebookLogin(){
        LoginManager.getInstance()
            .logInWithReadPermissions(this, Arrays.asList("public_profile","email"))

        LoginManager.getInstance()
            .registerCallback(callbackManager, object : FacebookCallback<LoginResult>{
                override fun onSuccess(result: LoginResult?) {
                    // 로그인 성공시
                    handleFacebookAccessToken(result?.accessToken)
                    // 파이어베이스로 로그인 데이터를 넘겨줌
                }

                override fun onCancel() {

                }

                override fun onError(error: FacebookException?) {

                }
            })
    }

로그인 함수를 작성해준다.

로그인 성공시 페이스북 데이터를 파이어베이스로 넘긴다.

 

fun handleFacebookAccessToken(token : AccessToken?){
        var credential = FacebookAuthProvider.getCredential(token?.token!!)

        auth?.signInWithCredential(credential)
            ?.addOnCompleteListener{
                    task ->
                if(task.isSuccessful){
                    // 아이디, 비밀번호 맞을 때
                    moveMainPage(task.result?.user)
                    Toast.makeText(this,"로그인 성공",Toast.LENGTH_SHORT).show()
                }else{
                    // 틀렸을 때
                    Toast.makeText(this,task.exception?.message,Toast.LENGTH_SHORT).show()
                }
            }

    }

토큰을 받아와 구글 로그인이랑 비슷한 방식으로 처리해주는 함수를 작성한다.

 

// 페이스북 로그인 버튼
        facebookButton.setOnClickListener { facebookLogin() }

버튼에 연결해준다.

 

잘 구현된 것을 확인할 수 있다.

 

github.com/HanYeop/AndroidStudio-Practice/tree/master/Firebase_test

 

HanYeop/AndroidStudio-Practice

AndroidStudio Practice. Contribute to HanYeop/AndroidStudio-Practice development by creating an account on GitHub.

github.com

 

반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading