1. 라이브러리 설치 Build.gradle(Module:app) Dependencies
1 2 | //구글 로그인 지원 implementation 'com.google.android.gms:play-services-auth:12.0.0' | cs |
2. https://console.firebase.google.com/ 사용설정으로 수정해준다.
3. LoginActivity.kr 페이지에 소스를 입력하자.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 | package kr.vrpano.wonstar import android.content.Intent import android.os.Bundle import android.support.v7.app.AppCompatActivity import android.view.View import android.widget.Toast import com.facebook.CallbackManager import com.google.android.gms.auth.api.Auth import com.google.android.gms.auth.api.signin.GoogleSignIn import com.google.android.gms.auth.api.signin.GoogleSignInAccount import com.google.android.gms.auth.api.signin.GoogleSignInClient import com.google.android.gms.auth.api.signin.GoogleSignInOptions import com.google.firebase.auth.FirebaseAuth import com.google.firebase.auth.FirebaseUser import com.google.firebase.auth.GoogleAuthProvider import kotlinx.android.synthetic.main.activity_login.* class LoginActivity : AppCompatActivity() { // Firebase Authentication 관리 클래스 var auth: FirebaseAuth? = null // 구글 로그인 관리 클래스 var googleSignInClient: GoogleSignInClient? = null // // 로그인 처리 결과 관리 클래스 // var callbackManager : CallbackManager? = null // GoogleLogin val GOOGLE_LOGIN_CODE = 9001 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_login) // Firebase 로그인 통합 관리하는 Object 만들기 auth = FirebaseAuth.getInstance() // 구글 로그인 옵션 var gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestIdToken(getString(R.string.default_web_client_id)) //토큰요청 .requestEmail() //이메일 요청 .build() //코드를 끝마치겠다 // 구글 로그인 클래스를 만듬 googleSignInClient = GoogleSignIn.getClient(this, gso) // 구글 로그인하는 클래스 //callbackManager = CallbackManager.Factory.create() // 초기 // 구글 로그인 버튼 이벤트 google_sign_in_button.setOnClickListener { googleLogin() } } // 로그인 성공 시 이동할 페이지 fun moveMainPage(user: FirebaseUser?) { if (user != null) { Toast.makeText( this, getString(R.string.signin_complete), Toast.LENGTH_SHORT ).show() startActivity(Intent(this, MainActivity::class.java)) finish() } } // 구글 로그인 코드 fun googleLogin() { progress_bar.visibility = View.VISIBLE var signInIntent = googleSignInClient?.signInIntent startActivityForResult(signInIntent, GOOGLE_LOGIN_CODE) } // 구글 로그인 성공 했을 때 결과값이 넘어오는 함수 override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) // 구글에서 승인된 정보를 가지고 오기 if (requestCode == GOOGLE_LOGIN_CODE) { val result = Auth.GoogleSignInApi.getSignInResultFromIntent(data) if (result.isSuccess) { // 구글 로그인이 성공 했을 경우 var account = result.signInAccount firebaseAuthWithGoogle(account!!) // moveMainPage(auth?.currentUser) //유저아이디를 넘겨준다. } else { progress_bar.visibility = View.GONE } } } // 구글 로그인 성공시 토큰값을 파이어베이스로 넘겨주어서 계정을 생성하는 콛, fun firebaseAuthWithGoogle(account: GoogleSignInAccount) { var credential = GoogleAuthProvider.getCredential(account.idToken, null) auth?.signInWithCredential(credential) ?.addOnCompleteListener { task -> progress_bar.visibility = View.GONE if (task.isSuccessful) { //다음 페이지 호출 moveMainPage(auth?.currentUser) } } } // 자동 로그인 설정 override fun onStart() { super.onStart() // 자동 로그인 설정 moveMainPage(auth?.currentUser) } } | cs |
4. 어플을 실행하고 구글아이디로 로그인을 하면 MainActivity 화면으로 전환된다.
5. MainActivity 에 로그아웃버튼을 만들어서 로그아웃을 해보자
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | package kr.vrpano.wonstar import android.content.Intent import android.os.Bundle import android.support.v7.app.AppCompatActivity import com.google.firebase.auth.FirebaseAuth import kotlinx.android.synthetic.main.activity_main.* class MainActivity : AppCompatActivity() { // Firebase var auth: FirebaseAuth? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) auth = FirebaseAuth.getInstance() //로그아웃 버튼 이벤트 처리 account_btn_follow_signout.setOnClickListener { view -> auth?.signOut() startActivity(Intent(this, LoginActivity::class.java)) } } } | cs |
'Firebase' 카테고리의 다른 글
이메일 로그인 만들기 (0) | 2018.11.27 |
---|---|
파이어베이스 로그인 설정 방법 (0) | 2018.11.25 |
파이어베이스와 안드로이드 스튜디오 연동하기 (0) | 2018.11.24 |
파이어베이스와 페이스북 소셜 로그인 연동하기 (0) | 2018.11.24 |