Android FirebaseUI를 사용한 Firebase Authentication(Facebook 인증)

업무로 Firebase Authentication을 만질 기회가 있었으므로 비망록으로 남깁니다.
FirebaseUI를 사용하고 있습니다. 사용하지 않아도 할 수 있으므로, 좋아하는 방법으로.

준비



Firebase 앱 만들기



콘솔 화면에서 (처음의 경우 이미지를 붙여 넣습니다) Android 앱을 추가합시다.


서명 증명서에 대해서는 여기에 써 있습니다.

Facebook 앱 만들기



facebook developer에 로그인하여 새로운 앱을 만드십시오.



빨간색으로 채워진 곳에 APP_ID가 기재되어 있으므로 메모.
표시 버튼을 눌러 표시되는 APP_SECRET

Firebase 앱에서 Facebook 인증 사용



왼쪽 메뉴에서 Authentication을 선택하여 로그인 방법으로 들어갑니다.
Facebook을 활성화합니다.



방금 메모 한 APP_IDAPP_SECRET를 여기에 입력하여 저장합시다.

Firebase UI Tips



Android 앱 만들기



SDK 설치


  • Firebase Auth SDK
  • Fackbook SDK
  • Firebase UI

  • 세 가지 SDK를 gradle에 추가합니다.

    Firebase Auth SDK



    app/build.gradle
    dependencies {
         implementation "com.google.firebase:firebase-auth:$GOOGLE_SERVICE_VERSION"
    }
    
    
    app 바로 아래의 build.gradle에 추기합니다.
    버전은 최신 안정 버전을 넣으십시오.

    Facebook SDK



    project/build.gradle
    ...
    
    buildscript {
        repositories {
            mavenCentral()
        }
    }
    
    ...
    

    프로젝트 바로 아래의 build.gradle에 위를 추가합니다.

    app/build.gradle
    dependencies {
         // Facebook SDK
         implementation "com.facebook.android:facebook-login:$FACEBOOK_SDK_VERSION"
    }
    
    app 바로 아래의 build.gradle에 추가합니다.

    Firebase UI



    app/build.gradle
    dependencies {
         // Firebase UI
         implementation "com.firebaseui:firebase-ui-auth:$FIREBASE_UI_VERSION"
    }
    
    app 바로 아래의 build.gradle에 추가합니다.

    추가가 끝나면 동기화합시다.

    Facebook 인증 처리



    debug.keystore 준비


    keytool -genkey -v -keystore debug.keystore -alias androiddebugkey -keyalg RSA -validity 10000 -dname "CN=Android Debug,O=Android,C=US"
    
    C= 의 파라미터는 일본으로 하고 싶으면 JP 로 해 둡시다.
    Facebook 앱의 서명 인증서 란에 등록하는 키 해시를 꺼내고 싶다면
    openssl sha1 -binary keystore/debug.keystore | openssl base64
    

    에서 꺼낼 수 있습니다.

    Layout



    로그인 버튼이있는 레이아웃 파일을 만듭니다.

    activity_login.xml
    <?xml version="1.0" encoding="utf-8"?>
    <layout 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.support.constraint.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="tsun.kettsun.component.activity.LoginActivity"
        >
    
        <Button
          android:id="@+id/login_button"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="facebook"
          app:layout_constraintBottom_toBottomOf="parent"
          app:layout_constraintLeft_toLeftOf="parent"
          app:layout_constraintRight_toRightOf="parent"
          app:layout_constraintTop_toTopOf="parent"
          />
      </android.support.constraint.ConstraintLayout>
    
    </layout>
    

    활동



    Activity를 준비합니다.

    LoginActivity.kt
    class LoginActivity : AppCompatActivity() {
    
        private val binding: ActivityLoginBinding by lazy {
            DataBindingUtil.setContentView<ActivityLoginBinding>(this, R.layout.activity_login)
        }
    
        private val onClicked = View.OnClickListener {
            startActivityForResult(
                    AuthUI.getInstance().createSignInIntentBuilder()
                            .setAvailableProviders(listOf(AuthUI.IdpConfig.Builder(AuthUI.FACEBOOK_PROVIDER).build()))
                            .build(), 100)
        }
    
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            binding.loginButton.setOnClickListener(onClicked)
        }
    }
    

    물론 AndroidManifest.xml 에도 추기합시다.

    움직여 보자



    아래 화면이 나오고 버튼을 클릭하면 Facebook의 인증 화면으로 날 수 있으면 성공합니다.



    실제로 인증하면 Firebase에서도 사용자를 확인할 수 있고 Authentication의 도입이 완료되고 있음을 알 수 있습니다.

    요약


  • FirebaseUI를 사용하면 쉽게 Facebook을 통해 Firebase Authentication을 할 수 있습니다
  • onActivityResult를 구현하면 응답에서 인증에 사용한 서비스에 대한 액세스 토큰을 얻을 수 있습니다.
  • 언제든지 언제든지 얻으려면 facebook sdk에서 가져옵니다.

  • AuthUI 에 복수의 Provider

  • 그러나, 위의 프로바이더 선택 화면의 UI는 유연성이 낮고, 변경할 수 있는 부분은 한정되어 있다
  • Statusbar 색상
  • Toolbar (Actionbar) 색상
  • backgroundColor
  • 중앙 로고 아이콘

  • 단지 호출하고 콜백을 설정하는 것만으로 사용할 수 있다는 것은 매우 편했습니다.
  • 좋은 웹페이지 즐겨찾기