업데이트:

카테고리:

/

태그:

android 프로젝트의 고유한 sha-1 값을 확인하려면

왼쪽탭에 gradle - 왼쪽위에 터미널 - gradle signingreport 입력후 엔터

Google one Tap 로그인

  1. google console credential - client ID 설정
  2. 의존성 추가

    implementation 'com.google.android.gms:play-services-auth:20.5.0'

    setting gradle에는 mavengoogle이 존재해야됨

Google Oauth 사용중 에러

10: Developer console is not set up correctly

→ app 빌드시에 사용하는 keyStore 가 아닌 프로젝트의 고유 keyStore 값으로 변경

16: Cannot find a matching credential

val signInRequest by lazy {
        BeginSignInRequest.builder()
        .setPasswordRequestOptions(BeginSignInRequest.PasswordRequestOptions.builder()
            .setSupported(true)
            .build())
        .setGoogleIdTokenRequestOptions(
            BeginSignInRequest.GoogleIdTokenRequestOptions.builder()
                .setSupported(true)
                // Your server's client ID, not your Android client ID.
                .setServerClientId(activity.getString(R.string.app_client_id))
                // Only show accounts previously used to sign in.
                .setFilterByAuthorizedAccounts(false)
                .build())
        // Automatically sign in when exactly one credential is retrieved.
        .setAutoSelectEnabled(true)
        .build() }

signInRequest를 빌드하는 과정에서 setServerClientId 의 값을 google play console의 웹 어플리케이션 client id 값을 넣어야 한다.

스크린샷 2023-06-19 오후 5.06.46.png

로그인이 성공

oneTapClient.beginSignIn(signInRequest)
.addOnSuccessListener(activity) { result ->
    try {
        startIntentSenderForResult(
            activity, result.pendingIntent.intentSender, REQ_ONE_TAP,
            null, 0, 0, 0, null)
    } catch (e: IntentSender.SendIntentException) {
        Log.e(TAG, "Couldn't start One Tap UI: ${e.localizedMessage}")
    }
}
.addOnFailureListener(activity) { e ->
    Log.d(TAG, e.localizedMessage)
}

요청이 성공하면, startIntentSenderForResult 로 oneTap UI를 호출한다.

pendingIntent 은 현재 앱에서 실행되는 것이 아닌 다른 앱이 실행되고 있을 때 알림을 클릭하거나 특정 행동을 했을 때 pendingIntent에 지정된 Intent가 실행됨

intentSender 인텐트를 다른 구성요소(액티비티, 서비스)로 보내는데 사용