24 lines
1.1 KiB
JavaScript
24 lines
1.1 KiB
JavaScript
|
|
// 네이티브(안드로이드) 구글 로그인 래퍼 — Capacitor Credential Manager 기반.
|
||
|
|
// 웹/Electron 에서는 GIS(웹) 방식을 쓰므로 여기선 네이티브 전용. 플러그인은 지연 import.
|
||
|
|
import { Capacitor } from '@capacitor/core'
|
||
|
|
|
||
|
|
// 네이티브 플랫폼(안드로이드 APK)에서만 네이티브 구글 로그인을 사용한다.
|
||
|
|
export function isNativeGoogle() {
|
||
|
|
return Capacitor.isNativePlatform()
|
||
|
|
}
|
||
|
|
|
||
|
|
let initializedClientId = null
|
||
|
|
|
||
|
|
// 웹 클라이언트 ID(서버에서 받은 값)로 네이티브 구글 로그인을 수행하고 ID 토큰을 반환한다.
|
||
|
|
// 반환된 ID 토큰의 aud 는 웹 클라이언트 ID 라서 백엔드 /api/auth/google 가 그대로 검증한다.
|
||
|
|
export async function nativeGoogleIdToken(clientId) {
|
||
|
|
const { GoogleSignIn } = await import('@capawesome/capacitor-google-sign-in')
|
||
|
|
// initialize 는 한 번만(같은 clientId 면 재호출 생략)
|
||
|
|
if (initializedClientId !== clientId) {
|
||
|
|
await GoogleSignIn.initialize({ clientId })
|
||
|
|
initializedClientId = clientId
|
||
|
|
}
|
||
|
|
const res = await GoogleSignIn.signIn()
|
||
|
|
return res?.idToken || null
|
||
|
|
}
|