본문 바로가기

Google Login 설정

GitHub

이 가이드에서는 Capgo Social Login으로 Google Login을 설정하는 방법을 알아봅니다. Google Login을 설정하려면 다음이 필요합니다:

  • Google 계정

이 섹션에서는 Google에서 표시되는 로그인 화면을 설정합니다.

  1. 다음 페이지로 이동하세요: console.cloud.google.com
  2. 프로젝트 선택기를 클릭하세요 Google Console 프로젝트 선택기
  3. 기존 프로젝트가 없다면, 새 프로젝트를 생성하세요.
    1. 클릭하세요 New project Google Console의 New Project 버튼
    2. 프로젝트 이름을 입력하고 클릭하세요 Create 이름 필드와 Create 버튼이 보이는 프로젝트 이름 설정 화면
    3. 올바른 프로젝트를 선택했는지 확인하세요 선택기에서 올바른 프로젝트가 선택되었음을 보여주는 프로젝트 이름
  4. 설정을 시작하려면 OAuth consent screen
    1. 검색창을 클릭하세요

      Google Console 검색창
    2. 검색어 입력 OAuth consent screen 클릭하세요

      OAuth 동의 화면 옵션이 표시된 검색 결과
    3. 동의 화면 설정하기

      클릭하세요 create

      OAuth 동의 화면 사용자 유형 선택 (External 및 Internal 옵션)
  5. 앱 정보 입력
    1. 먼저, App Information

      앱 이름과 사용자 지원 이메일 필드가 있는 App Information 섹션부터 시작하겠습니다.
      • 다음 내용을 입력해 주세요: App Name
      • 다음 항목을 입력하세요 user support email
      1. 귀하 할 수 있습니다 앱 로고를 추가할 수 있습니다.

        OAuth 동의 화면의 앱 로고 업로드 섹션
      2. 귀하 권장 다음 설정을 완료해야 합니다: App domain

        승인된 도메인 필드가 포함된 App domain configuration 섹션
      3. 귀하 필수 개발자 이메일 입력

        이메일 필드가 포함된 개발자 연락처 정보 섹션
      4. 클릭하세요 save and continue

        폼 하단의 저장 및 계속 버튼
  6. Scope 설정
    1. 클릭하세요 add or remove scopes

      Scope 설정 화면의 Scope 추가/삭제 버튼
    2. 다음 Scope를 선택하고 클릭하세요 update

      email 및 profile Scope가 선택된 Scope 선택 대화 상자
    3. 클릭 save and continue

      Scope 설정 화면의 저장 및 계속 버튼
  7. 테스트 사용자 추가
    1. 클릭하세요 add users 테스트 사용자 섹션의 사용자 추가 버튼
    2. Google 이메일을 입력하고 Enter를 누른 뒤, 클릭하세요 add 테스트 사용자용 이메일 입력 필드 및 추가 버튼
    3. 클릭 save and continue 테스트 사용자 화면의 저장 및 계속 버튼
  8. 클릭 back to dashboard 완료 페이지 하단의 대시보드로 돌아가기 버튼
  9. 앱 검토 요청 제출하기

온라인 액세스와 오프라인 액세스의 차이점

“온라인 액세스와 오프라인 액세스의 차이점” 섹션

Capacitor에서 Google Login을 사용하는 방법은 여러 가지가 있습니다. 다음은 두 방식의 차이점을 정리한 표입니다:

온라인 액세스오프라인 액세스
백엔드 필요❌✅
장기 유지 액세스 토큰❌✅
간편한 설정✅❌

어떤 방식을 선택해야 할지 모르겠다면, 다음 시나리오를 참고하세요:

  1. 사용자가 로그인하자마자 커스텀 JWT를 발급해야 하는 경우입니다. 앱에서 Google API를 호출하지는 않습니다.

    이 경우에는 online access를 선택하세요.

  2. 앱이 클라이언트에서 Google API를 호출하지만, 백엔드에서는 호출하지 않는 경우입니다.

    이 경우에는 online access를 선택하세요.

  3. 사용자가 앱을 활발히 사용하는 동안에만 백엔드에서 Google API를 호출하는 경우입니다.

    이 경우에는 online access를 선택하세요.

  4. 사용자가 앱을 사용 중이지 않을 때도 주기적으로 사용자의 캘린더를 확인해야 하는 경우입니다.

    이 경우에는 offline access를 선택하세요.

online access를 위한 백엔드 예시

“online access를 위한 백엔드 예시” 섹션

이번 튜토리얼에서는 백엔드에서 사용자를 검증하는 방법을 알아봅니다.

이 예제는 매우 간단하며 다음 기술들을 기반으로 합니다:

이 예제의 code는 여기서 확인할 수 있습니다 여기서

다음과 같습니다:

토큰을 검증하는 Google 인증 code을 보여주는 VS Code

원리는 매우 간단합니다. 간단한 GET 요청을 https://www.googleapis.com/oauth2/v3/tokeninfo 로 보내면 토큰의 유효 여부를 반환하며, 유효할 경우 사용자의 이메일을 제공합니다. 또한 사용자 토큰에 대한 기타 정보도 함께 제공합니다.

사용자 상세 정보가 포함된 토큰 정보 응답을 보여주는 Google OAuth Playground

이를 통해 사용자에게 자체 JWT를 발급하거나 세션 쿠키를 생성할 수 있습니다. 최종 인증 구현 방식은 무궁무진합니다.

Google API를 호출하고 싶다면 다음을 확인해 보시길 강력히 권장합니다. Google OAuth 2.0 Playground. 여기서 호출 가능한 API를 쉽게 확인할 수 있습니다.

자체 백엔드에서 offline access 사용하기

“자체 백엔드에서 offline access 사용하기” 섹션

offline access를 사용하려면 다음 항목이 필요합니다:

  • HTTP 서버

이 예제에서는 앱에 offline access를 제공하기 위해 다음 기술들을 사용합니다:

이 예제의 code는 다음에서 확인할 수 있습니다. 여기서

클라이언트 code는 다음과 같습니다:

import { Capacitor } from '@capacitor/core';
import { GoogleLoginOfflineResponse, SocialLogin } from '@capgo/capacitor-social-login';
import { usePopoutStore } from '@/popoutStore'; // <-- specific to my app
const baseURL = "[redacted]";
async function fullLogin() {
await SocialLogin.initialize({
google: {
webClientId: '[redacted]',
iOSClientId: '[redacted]',
iOSServerClientId: 'The same value as webClientId',
mode: 'offline' // <-- important
}
})
const response = await SocialLogin.login({
provider: 'google',
options: {
forceRefreshToken: true // <-- important
}
})
if (response.provider === 'google') {
const result = response.result as GoogleLoginOfflineResponse
const res = await fetch(`${baseURL}/auth/google_offline`, {
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify({
serverAuthCode: result.serverAuthCode,
platform: Capacitor.getPlatform()
}),
method: "POST"
})
if (res.status !== 200) {
popoutStore.popout("Full google login failed", "check console");
return
}
const { jwt } = await res.json();
const userinfo = await fetch(`${baseURL}/auth/get_google_user`, {
headers: {
Authorization: `Bearer ${jwt}`
}
})
if (userinfo.status !== 200) {
popoutStore.popout("Full google (userinfo) login failed", "check console");
return
}
popoutStore.popout("userinfo res", await userinfo.text());
}
}

여기서 빠진 부분을 확인하세요. 없는 것은 SocialLogin.refresh() 앱 내 호출입니다. 이는 의도된 동작입니다. Google 오프라인 모드에서 refresh는 백엔드가 다음을 교환하고 serverAuthCode refresh token을 안전하게 저장한 뒤 발생합니다.

Google Login Setup부터 계속 진행하세요

“Google Login 설정 계속하기” 섹션

사용 중인 경우 Google Login 설정 인증 및 계정 흐름을 계획하려면, 이를 다음 항목과 연결하세요 @capgo/capacitor-social-login 사용하기 @capgo/capacitor-social-login의 네이티브 기능 활용 시, @capgo/capacitor-social-login @capgo/capacitor-social-login의 구현 세부 사항, @capgo/capacitor-passkey @capgo/capacitor-passkey의 구현 세부 사항, @capgo/capacitor-native-biometric @capgo/capacitor-native-biometric의 구현 세부 사항, 그리고 2단계 인증 2단계 인증의 구현 세부 사항.