김호쭈
DevForYou
김호쭈
전체 방문자
오늘
어제
  • 분류 전체보기 (321)
    • • 데이터베이스(DB) (9)
      • __SQL__ (9)
    • •알고리즘(Algorithm ) (117)
      • 문제풀이 (99)
      • 스터디 (14)
      • 알고리즘 팁 (4)
    • •Compter Science (57)
      • Operating System (25)
      • Computer Network (1)
      • Computer Vision (16)
      • Artificial Intelligence (14)
      • Software Technology (1)
    • • 독서 (36)
      • Design Pattern (24)
      • 객체지향의 사실과 오해 (1)
      • Object Oriented Software En.. (11)
    • • 개발 (26)
      • React (3)
      • node.js (6)
      • Django (11)
      • Spring boot (6)
    • • 개발Tip (4)
      • GitHub (0)
    • •프로젝트 (2)
      • 물물 (2)
    • •App (54)
      • 안드로이드 with Kotlin (50)
      • 코틀린(Kotiln) (4)
    • •회고 (8)
    • •취준일기 (3)
    • • 기타 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 로컬저장소
  • 깃허브데스크탑
  • Remote저장소
  • ㄱ
  • KMU_WINK
  • GitHubDesktop
  • local저장소
  • 원격저장소

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
김호쭈

DevForYou

[안드로이드&코틀린] 틴더앱 만들기#2, facebook 로그인 연동하기, onActivityResult
•App/안드로이드 with Kotlin

[안드로이드&코틀린] 틴더앱 만들기#2, facebook 로그인 연동하기, onActivityResult

2022. 5. 3. 03:23
 

[안드로이드&코틀린] 틴더앱 만들기#1, 파이어베이스 Authentication이용하여 로그인 회원가입 기능

최종 결과물이 아닌 본 게시글에서 공부했던 것의 결과물임. # 결과물 미리보기 아마 안드로이드의 가장 기초면서 가장 많이쓰이는 기술이 아닐까 싶다. 파이어베이스 Authentication을 이용하여 ema

devforyou.tistory.com

시험이 끝나서 오랜만에 안드로이드 공부를 다시 시작했다. 보니까 한달정도는 지난거 같아서, 까먹은것도 많은데 블로그 그럴때 블로글 한번씩 보는 중이다. 꽤 도움이 된다. 소셜 로그인기능중 페이스북을 구현해본다. 우리나라는 이제 페이스북은 별로 안쓰는거 같고, 카카오톡이나 네이버 로그인이 더 많이 쓰일거 같다. 근데 firebase에서는 기본 베이스로는 지원하지 않기 때문에 가장 흔히 사용하는 페이스북 소셜 로그인을 구현해본다. 

 

# 준비

 

Facebook for Developers

Show Slide 1Show Slide 2Show Slide 3Show Slide 4Show Slide 5 META로 빌드하기 Facebook의 추천 플랫폼으로 고객과 소통하고 효율을 높여보세요. Messenger 플랫폼 편리하고 개인적인 사용자 경험을 통해 잠재 고객을

developers.facebook.com

먼저 페이스북 디벨로퍼에서 회원가입 한 후, 내 앱을 만든다.

간단한 로그인기능만 사용할거이기 때문에 소비자로 만들면 된다.

이후 내가 만든 앱에서 기본설정을 눌러 앱ID와 앱시크릿 코드를 복사하여

파이어 베이스의 authentication에 login-method에 페이스북을 추가 해당 값들을 복붙해준다.



그리고 다시 FaceBook(이제는 meta가 되어 버린..)으로 돌아와 저기서 하라는대로 한다. 몇개는 안해도 되는데 읽어보면서 필요한거 골라서 하면 된다.

 

# 기능 구현하기

## 레이아웃(XML)에 페이스북 로그인 버튼 추가

 위 준비 과정을 다 맞추었다면, 내 안드로이드 스튜디오에는 페이스북과 잘 연동 돼 있을 것이다. 페이스북 로그인을 위한 버튼을 먼저 xml에 추가해주자. 

<com.facebook.login.widget.LoginButton
  android:id="@+id/facebookLoginButton"
  android:layout_width="0dp"
  android:layout_height="wrap_content"
  app:layout_constraintTop_toBottomOf="@id/signupButton"
  app:layout_constraintStart_toStartOf="parent"
  app:layout_constraintEnd_toEndOf="parent"/>

LoginButton을 추가해주면 이쁘게 디자인 된 버튼이 생길 것이다.

 

## 액티비티에서 연동하기

 먼저 우리가 사용하는 소셜로그인들은 버튼을 누르면, 새로운 페이지가 열리고 거기서 로그인 되면 다시 내 앱으로 돌아오는 형태이다. 여기서도 똑같다. 그렇게 다시 리턴을 받는 경우에는 onActivityResult를 사용한다. 그리고 그러한 것들은 페이스북내에 구현 된 callbackManger가 알아서 해준다.

### onActivityResult

private lateinit var callbackManager : CallbackManager

    override fun onCreate(savedInstanceState: Bundle?) {
		// ...
        //페이스북 연결
        callbackManager = CallbackManager.Factory.create()
		// ...
    }

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    callbackManager.onActivityResult(requestCode,resultCode,data)
}

 

### 로그인 버튼

 이제 로그인 버튼을 누르고 나서 일련의 과정을 정의하자. 사실 이런 소셜 로그인은 이미 다 짜여있는 코드이기 때문에 딱히 복잡한 것은 없다.

private fun initFacebookLoginButton() {
    val facebookLoginButton = binding.facebookLoginButton
    // 어떤걸 받아올지 !
    facebookLoginButton.setPermissions("email","public_profile")
    facebookLoginButton.registerCallback(callbackManager,object: FacebookCallback<LoginResult>{
        override fun onCancel() {
        }
        
        override fun onError(error: FacebookException) {
            Toast.makeText(this@LoginActivity,"로그인에 실패했습니다",Toast.LENGTH_SHORT).show()
        }

        override fun onSuccess(result: LoginResult) {
            val credential = FacebookAuthProvider.getCredential(result.accessToken.token)
            auth.signInWithCredential(credential)
                .addOnCompleteListener { task ->
                    if(task.isSuccessful) {
                        finish()
                    }else {
                        Toast.makeText(this@LoginActivity,"로그인에 실패했습니다",Toast.LENGTH_SHORT).show()
                    }
            }
        }
    })
}

 

중요한 건 onSuccess이후 인데, credential을 로그인 시 받아오고, firebase에 받아온 credential을 통하여 로그인을 하는 것이다. 

 

# 마치며

 hash-key관련해서 이슈를 겪고 있는데 해결하면 추가적으로 수정하여 포스팅하도록 하겠다. 다시 안드로이드 공부도 열심히하고 슬슬 알고리즘 공부도 해야겠다.

저작자표시 (새창열림)

'•App > 안드로이드 with Kotlin' 카테고리의 다른 글

[안드로이드&코틀린] 틴더앱 만들기#4, CardStackView 사용하기, 깃허브 라이브러리 사용하기, 리사이클러뷰  (0) 2022.05.05
[안드로이드&코틀린] 틴더앱 만들기#3, 파이어베이스 리얼타임데이터베이스 사용, 초간단 editText 다이얼로그 만들기  (0) 2022.05.04
[안드로이드&코틀린] 틴더앱 만들기#1, 파이어베이스 Authentication이용하여 로그인 회원가입 기능 초간단 구현하기  (0) 2022.04.10
[안드로이드&코틀린] 인터파크API이용하여 도서리뷰앱 만들기#2, 어댑터에 버튼 구현하기, 인탠트로 모델 보내기, 안드로이드 Room DB 사용하기, Thread와 thread 차이  (2) 2022.04.07
[안드로이드&코틀린] 인터파크API이용하여 도서리뷰앱 만들기#1, retrofit,gson, DTO, glide, viewBinding, inflate, layoutinflate, RecyclerView  (0) 2022.04.04
    '•App/안드로이드 with Kotlin' 카테고리의 다른 글
    • [안드로이드&코틀린] 틴더앱 만들기#4, CardStackView 사용하기, 깃허브 라이브러리 사용하기, 리사이클러뷰
    • [안드로이드&코틀린] 틴더앱 만들기#3, 파이어베이스 리얼타임데이터베이스 사용, 초간단 editText 다이얼로그 만들기
    • [안드로이드&코틀린] 틴더앱 만들기#1, 파이어베이스 Authentication이용하여 로그인 회원가입 기능 초간단 구현하기
    • [안드로이드&코틀린] 인터파크API이용하여 도서리뷰앱 만들기#2, 어댑터에 버튼 구현하기, 인탠트로 모델 보내기, 안드로이드 Room DB 사용하기, Thread와 thread 차이
    김호쭈
    김호쭈
    공부하고 정리하고 기록하기

    티스토리툴바