Android Google Oauth
업데이트:
카테고리: Android
/태그: Google Oauth
android 프로젝트의 고유한 sha-1 값을 확인하려면
왼쪽탭에 gradle
- 왼쪽위에 터미널
- gradle signingreport
입력후 엔터
Google one Tap 로그인
- google console credential - client ID 설정
-
의존성 추가
implementation 'com.google.android.gms:play-services-auth:20.5.0'
setting gradle에는
maven
과google
이 존재해야됨
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 값을 넣어야 한다.
로그인이 성공
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
인텐트를 다른 구성요소(액티비티, 서비스)로 보내는데 사용