구글 콘솔에서 정보 설정
https://console.cloud.google.com/welcome?hl=ko&inv=1&invt=Abo6BQ&project=deep-contact-450106-u3
먼저 구글 콘솔에서 앱에 관한 설정을 진행합니다

새 프로젝트를 설정한 후 프로젝트 이름을 적습니다

그 후 API 및 서비스로 들어가서 OAuth 동의 화면을 만듭니다


그 다음 사용자 인증 정보에 들어갑니다
사용자 인증 정보를 만듭니다

사용자 인증 정보에서 OAuth 클라이언트 ID를 선택합니다

총 3개를 만들겁니다
debug용 android, release용 android, 웹 어플리케이션입니다
먼저 debug용 android 입니다
어플리케이션 유형에서 android를 선택한 후 필요한 정보를 입력합니다
이름은 알아보기 쉽게 android debug로 하겠습니다

다음은 release용 android입니다
위와 마찬가지로 필요한 정보를 입력하는데 여기서는 기존에 안드로이드 gradle에서 signingreport를 통해 얻은 SHA-1키를 사용할 수 없습니다
방법은 링크를 통해 확인하시면 되겠습니다
https://blog.naver.com/jungeun85623/220607717078
여기서 apk 파일까지 만든 후
build.gradle 파일에 다음과 같이 적고 synk를 해줍니다
android {
signingConfigs {
create("release") {
storeFile = file("C:/DATA/LoginTest/keystore.jks") // 예시
storePassword = "aaaa1111" // 예시
keyAlias = "key1" // 예시
keyPassword = "aaaa1111" // 예시
}
}
buildTypes {
release {
isMinifyEnabled = false
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
signingConfig = signingConfigs.getByName("release") // 추가
}
}
...
}
그 후 다시 signingreport를 하시면 release용 SHA-1키도 얻을 수 있습니다
이렇게 release용 SHA-1키를 가지고 debug용 android를 만들었던 것처럼 동일하게 진행합니다
이름은 알아보기 쉽게 android release로 하겠습니다
마지막으로 웹어플리케이션입니다
어플리케이션 유형을 웹어플리케이션으로 선택한 후 추가합니다
그럼 다음과 같습니다

파이어베이스에서 정보 설정
다음은 파이어베이스에서 로그인 정보를 설정합니다
https://console.firebase.google.com/u/0/?hl=ko
로그인 - Google 계정
이메일 또는 휴대전화
accounts.google.com

새 프로젝트를 생성합니다
어플 이름을 입력 후 프로젝트 설정에 들어갑니다

그 후 앱을 추가해줍니다


그 후 필요한 작업을 해줍니다
다음으로 debug용 SHA-1키와 release용 SHA-1키를 추가합니다

그 후 google-service.json을 안드로이드 프로젝트 app/에 넣어줍니다
build.gradle 파일 설정
// module
dependencies {
...
// google login
implementation(libs.play.services.auth)
implementation(platform(libs.firebase.bom))
implementation(libs.firebase.auth.ktx)
implementation(libs.firebase.analytics)
}
// project
plugins {
alias(libs.plugins.android.application) apply false
alias(libs.plugins.kotlin.android) apply false
id("com.google.gms.google-services") version "4.4.2" apply false
}
코드 구현
<resources>
<string name="app_name">LoginTest</string>
<string name="google_client_id">...</string>
</resources>
여기서 중요한 점은 google_client_id를 아까 구글 콘솔에서 설정한 웹어플리케이션의 id를 가져와야한다는 점입니다
절대 android키로 가져오면 안됩니다

class MainActivity : AppCompatActivity() {
lateinit var binding: ActivityMainBinding
private lateinit var mGoogleSigninClient: GoogleSignInClient // 선언 추가
private val googleLoginResult = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result: ActivityResult ->
val resultCode = result.resultCode
val data = result.data
try {
val completedTask = GoogleSignIn.getSignedInAccountFromIntent(data)
val account = completedTask.getResult(ApiException::class.java)
onLoginCompleted("${account?.id}", "${account?.idToken}")
} catch (e: ApiException) {
onError(Error(e))
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
// google login
binding.signInButton.setOnClickListener {
signInWithGoogle()
}
}
private fun signInWithGoogle() {
val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(getString(R.string.google_client_id)) // 요청할 때마다 받아오기
.requestEmail()
.build()
mGoogleSigninClient = GoogleSignIn.getClient(this, gso)
googleLoginResult.launch(mGoogleSigninClient.signInIntent)
}
private fun onLoginCompleted(userId: String?, accessToken: String?){
Toast.makeText(this, "구글 로그인 성공", Toast.LENGTH_SHORT).show()
Log.e("YMC", "userId: $userId / accessToken: $accessToken")
}
private fun onError(error : Error?){
Toast.makeText(this, "구글 로그인 실패", Toast.LENGTH_SHORT).show()
Log.e("YMC", "구글 로그인 실패 onError / error: ${error} / error.msg: ${error?.message}")
}
}
결과


'전공 > Android' 카테고리의 다른 글
| [안드로이드] 네이버 로그인 연동 방법 (0) | 2024.12.03 |
|---|---|
| [안드로이드] 카카오 로그인 연동 방법 (0) | 2024.06.26 |
| [영화 정보 앱 만들기] 06. 기타 기능 (0) | 2024.06.22 |
| [영화 정보 앱 만들기] 05. 정보 수정하기 (0) | 2024.06.20 |
| [영화 정보 앱 만들기] 04. 데이터 추가하기 (0) | 2024.06.20 |
