와챠의 우당탕탕 코딩 일기장
[Android] Google Login API 사용해보기 본문
반응형
준비
0. 구글 API콘솔 프로젝트 생성
- OAuth 2.0 클라이언트 ID를 Android 용으로 생성
개발
1. 의존성 추가
- 파이어베이스랑 구글 프로젝트 생성하다보면 의존성 추가하라고 안내해주는 대로 추가하다보면 이렇게 댑니다아
implementation 'com.google.firebase:firebase-auth-ktx:21.0.3'
implementation platform('com.google.firebase:firebase-bom:31.5.0')
implementation 'com.google.firebase:firebase-analytics-ktx'
implementation 'com.google.android.gms:play-services-auth:20.5.0'
2. 인터넷 권한 추가
- Manifest에 인터넷 접속 권한 추가해줍니다!
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
3. 코드 작성
xml은 그냥 버튼만 둠..ㅋ
설명은 주석에 있습니더
import android.content.Intent
import android.os.Bundle
import android.util.Log
import androidx.activity.result.ActivityResult
import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContracts
import com.example.googlelogingtest.databinding.ActivityMainBinding
import com.google.android.gms.auth.api.signin.GoogleSignIn
import com.google.android.gms.auth.api.signin.GoogleSignInClient
import com.google.android.gms.auth.api.signin.GoogleSignInOptions
import com.google.android.gms.common.api.ApiException
class MainActivity : BaseActivity<ActivityMainBinding>(R.layout.activity_main) {
companion object {
private val TAG = "mmm"
}
private lateinit var googleSignInOptions: GoogleSignInOptions
private lateinit var googleSignInClient: GoogleSignInClient
private lateinit var GoogleSingResultLauncher: ActivityResultLauncher<Intent>
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// 구글 로그인 옵션
googleSignInOptions = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.build()
googleSignInClient = GoogleSignIn.getClient(this, googleSignInOptions)
// 구글 로그인 버튼 클릭 리스너
initOnClickListener()
// 구글 로그인 intent 띄우고 결과 처리하는 런처
GoogleSingResultLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()){ result:ActivityResult ->
// 결과 잘 받으면 구글 계정 이메일 출력
if(result.resultCode == RESULT_OK){
result.data?.let{data->
val task = GoogleSignIn.getSignedInAccountFromIntent(data)
try {
val account = task.getResult(ApiException::class.java)
Log.d(TAG, account.email.toString())
}catch (e: ApiException){
Log.w(TAG, "Google sign in failed", e)
}
}
}else{
println(result)
}
}
}
// 구글 로그인 버튼 클릭 리스너
private fun initOnClickListener() {
binding.btnGoogleSignIn.setOnClickListener {
googleSignIn()
}
}
// 구글 로그인
private fun googleSignIn(){
googleSignInClient.signOut()
val signInIntent = googleSignInClient.signInIntent
GoogleSingResultLauncher.launch(signInIntent)
}
}
결과
파이어 베이스로 연동하고 싶으신 분들은 파베 콘솔도 생성해서 아래 설정을 해주시고 사용해주심 됩니더
1. 파이어베이스 프로젝트 생성
- Authentication을 on 해줍니다.
- 구글 로그인 설정도 허용해주세요!
- Android Studio에서도 파이어베이스 연동을 해줍니다.
오류 로그
1. 구글 로그인 10 Error가 났는데
com.google.android.gms.common.api.ApiException: 10:
- 테스트하는 App
- 구글 API OAuth 인증
- Firebase Project
이거 3개의 Sha1값을 똑같이 맞추니 해결되었음
2. 구글 API OAuth Android용 생성 시 같은 키를 사용하는 계정이 있다면서 안 만들어졌는데
이전에 생성한 모든 구글 프로젝트 뒤지면서 Android 계정 생성한 거 찾아서 삭제했더니..만들어짐ㅋㅋ
+ sha1 키 받는 법
3가지 방법이 있는데 이 중 하나만 해도 됨
방법 1. 키 받는 명령어 + 비밀번호까지 한꺼번에 입력하는 명령어
터미널 열고 아래 명령어 입력
keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android
방법 2. 키 받는 명령어 입력 + 비밀번호 입력하라고 하면 android 입력
keytool -list -v -keystore ~/.android/debug.keystore
방법 3. 터미널에 아래 코드 입력
./gradlew signingReport
게시글 진자 올만,,, 안드는 더 올만인듯!!!! 개바쁨 졸프하느라
반응형
'코딩 일기장 > Android(Kotlin)' 카테고리의 다른 글
[Android/Kotlin]Kakao Address api 사용해보기 (0) | 2022.10.10 |
---|---|
[Android/Kotlin] S3 image upload/순서대로 여러장 업로드하기/RxKotlin/MultiUploaderS3Client (0) | 2022.09.17 |
[Android/Kotlin] hide KEY/KEY 숨기기 (1) | 2022.09.11 |
[Android/Kotlin] Hilt 사용해보기 (2) | 2022.08.24 |
[Android/Kotlin] TextPicker/NumberPicker를 Custom해서 TextPicker 만들기/Dialog return value/다이얼로그에서 리턴값 받기 (0) | 2022.08.04 |
Comments