내용으로 건너뛰기

안드로이드에서 구글 로그인

GitHub

이 가이드에서, Capgo Android용 Social Login을 사용하여 Google 로그인을 설정하는 방법을 배웁니다. 이미 일반 설정 가이드를 읽으셨다고 가정합니다. Android에서 Google 로그인을 사용하는 방법.

이 부분에서, Android에서 Google 로그인을 설정하는 방법을 배울 것입니다.

  1. Android 클라이언트 ID를 생성하세요.

    1. 검색 바를 클릭하세요.

      Google 콘솔 검색 바
    2. 검색어를 입력하세요. credentials 그리고 APIs and Services 1번 스크린샷에 표시된 2번을 클릭하세요.

      APIs 및 Services가 강조된 자격 증명 옵션을 보여주는 검색 결과
    3. 클릭하세요. create credentials

      Google Console에서 인증서 생성 버튼 만들기
    4. 선택 OAuth client ID

      인증서 생성 메뉴에서 OAuth 클라이언트 ID 선택
    5. 선택한 Android 애플리케이션 유형

      애플리케이션 유형 선택 화면에서 Android 옵션 강조
    6. Android Studio 열기

    7. 네비게이터의 가장 아래 부분에서 Gradle Scripts 섹션을 찾기 Gradle Scripts

      Gradle Scripts 섹션에서 모듈
    8. build.gradle (Module: app) 파일 찾기 build.gradle for the module app

      build.gradle (Module: app) file in Gradle Scripts section
    9. Google Android 플러그인 android.defaultConfig.applicationId이 단계에서 Google Console에 package name Google Console에

      Build.gradle 파일의 applicationId 설정을 확인하세요
    10. 터미널을 열어 android 터미널에서 gradlew signInReport 명령어를 실행하세요 ./gradlew signInReport

    이 명령어의 맨 위로 스크롤을 내려보세요
    1. SHA1 인증서 지문이 표시되어야 합니다 SHA1.
    Google Console로 돌아가서
    1. Google Console에 applicationId 인증서 필드에 SHA1을 입력하고 Package Name 클릭하세요 create
    Android 앱 클라이언트 생성 폼에 패키지 이름 및 SHA1 필드가 입력되어 있습니다.
  2. Android용 웹 클라이언트를 생성하세요. (이것은 Android용으로 필수입니다.)

    1. Google Console의 Create credentials 페이지로 이동하세요.

    2. 설정 Web

      Google Console에서 애플리케이션 유형을
    3. 웹 옵션을 강조한 애플리케이션 유형 선택 Create

      클릭하세요.
    4. 웹 클라이언트 생성 폼에 Create 버튼이 아래쪽에 있습니다. webClientId 클라이언트 ID를 복사하세요. 이 ID를 JS/TS code에서 사용하겠습니다.

      클라이언트 ID 세부 정보에 웹 클라이언트 ID를 복사하세요.
  3. Android용 MainActivity

    1. Android Studio에서 앱을 열어 주세요. 실행할 수 있습니다. cap open android

    2. 찾아보기 MainActivity.java

      1. 열기 app 폴더

        Android Studio 프로젝트 탐색기에서 앱 폴더를 찾으세요.
      2. 찾아보기 java

        Android Studio 프로젝트 구조에서 Java 폴더를 찾으세요.
      3. 찾아보기 MainActivity.java MainActivity.java 파일을 찾으세요. 패키지 구조에서 클릭하세요.

        수정
    3. . 다음을 추가하세요. __CAPGO_KEEP_0__. MainActivity.java. Please add the following code

      import ee.forgr.capacitor.social.login.GoogleProvider;
      import ee.forgr.capacitor.social.login.SocialLoginPlugin;
      import ee.forgr.capacitor.social.login.ModifiedMainActivityForSocialLoginPlugin;
      import com.getcapacitor.PluginHandle;
      import com.getcapacitor.Plugin;
      import android.content.Intent;
      import android.util.Log;
      import com.getcapacitor.BridgeActivity;
      // ModifiedMainActivityForSocialLoginPlugin is VERY VERY important !!!!!!
      public class MainActivity extends BridgeActivity implements ModifiedMainActivityForSocialLoginPlugin {
      @Override
      public void onActivityResult(int requestCode, int resultCode, Intent data) {
      super.onActivityResult(requestCode, resultCode, data);
      if (requestCode >= GoogleProvider.REQUEST_AUTHORIZE_GOOGLE_MIN && requestCode < GoogleProvider.REQUEST_AUTHORIZE_GOOGLE_MAX) {
      PluginHandle pluginHandle = getBridge().getPlugin("SocialLogin");
      if (pluginHandle == null) {
      Log.i("Google Activity Result", "SocialLogin login handle is null");
      return;
      }
      Plugin plugin = pluginHandle.getInstance();
      if (!(plugin instanceof SocialLoginPlugin)) {
      Log.i("Google Activity Result", "SocialLogin plugin instance is not SocialLoginPlugin");
      return;
      }
      ((SocialLoginPlugin) plugin).handleGoogleLoginIntent(requestCode, data);
      }
      }
      // This function will never be called, leave it empty
      @Override
      public void IHaveModifiedTheMainActivityForTheUseWithSocialLoginPlugin() {}
      }
    4. 파일 저장

  4. Google 로그인 사용

    1. 첫 번째로 import를 합니다. SocialLogin

      import { SocialLogin } from '@capgo/capacitor-social-login';
    2. 초기화 함수를 호출합니다. 이 함수는 한 번만 호출해야 합니다.

      // onMounted is Vue specific
      // webClientId is the client ID you got in the web client creation step not the android client ID.
      onMounted(() => {
      SocialLogin.initialize({
      google: {
      webClientId: '673324426943-avl4v9ubdas7a0u7igf7in03pdj1dkmg.apps.googleusercontent.com',
      }
      })
      })
    3. Google 로그인을 호출합니다. SocialLogin.login. Create a button and run the following code on click.

      const res = await SocialLogin.login({
      provider: 'google',
      options: {}
      })
      // handle the response
      console.log(JSON.stringify(res))
  5. 백엔드에서 데이터를 주고받는 흐름을 위해

    1. Google의 리프레시 토큰을 백엔드에 저장하고, 백엔드에서 리프레시하세요. Device manager 테스트를 위해 에뮬레이터를 설정하세요.

      Android Studio에서
    2. 에뮬레이터를 테스트하기 위해

      플러스 버튼을 클릭하세요.
    3. Android Studio의 Device Manager에서 플러스 버튼이 강조되어 있습니다. Play Store icon

      Play Store 지원하는 장치와 함께 하드웨어 선택을 보여줍니다.

      보시다시피, pixel 8 Play Store 지원을 Play Store 서비스

    4. 클릭 next

      디바이스 생성 마법사에서 다음 버튼을 클릭하세요.
    5. Capgo 빌더 / 네이티브 클라우드 빌드 제품 페이지 (Page/area: Capgo Builder / native cloud build product page). Google Play. OS 이미지가 IT MUST Google Play

      OS 이미지가
    6. Google Play 유형 이미지를 보여주는 시스템 이미지 선택

      시스템 이미지 선택 화면의 다음 버튼
    7. 장치 확인을 위해, 에뮬레이터 이름을 원하는 대로 지어보세요

      설정 완료 버튼이 있는 장치 구성 확인 화면
    8. 시뮬레이터로 Device Manager 시뮬레이터를 부팅하세요

      가상 장치 목록이 있는 디바이스 매니저
    9. 시뮬레이터가 부팅되면, 설정으로 가보세요

      설정 앱이 표시되는 안드로이드 에뮬레이터
    10. 설정으로 Google Play

    Google Play 옵션을 선택한 설정 화면
    1. 클릭하세요 Update 약 60초 동안 기다려보세요
    구글 플레이 업데이트 화면에 업데이트 버튼이 있습니다.
  6. 애플리케이션을 테스트하세요.

    모든 것을 올바르게 수행했으면, 구글 로그인 흐름이 올바르게 작동되어야 합니다:

    안드로이드에서 구글 로그인 흐름의 데모를 보여주는 화면입니다. 이 화면은 로그인 프로세스와 인증이 성공적으로 완료된 화면입니다.

문제 해결

문제 해결

문제가 발생하면, 구글 클라우드 콘솔의 앱 구성과 값을 비교하세요. 안드로이드 구글 로그인 실패는 일반적으로 패키지 이름, SHA-1, 또는 클라이언트 ID가 일치하지 않아 발생하는 경우입니다.

인증 관리자, SHA-1, 및 파이어베이스

인증 관리자, SHA-1, 및 파이어베이스

안드로이드에서 이 플러그인은 구글 인증 관리자 (구글 로그인과 함께)를 사용합니다. (구글 로그인과 함께) legacy 플러그인 대신에androidx.credentials __CAPGO_KEEP_0__. 로그캣 오류 GoogleSignInClient API. GetCredentialCustomException: [28444] Developer console is not set up correctly 그것에서 오는 것입니다.

로그캣 필터링 GoogleProvider 또는 CapgoSocialLogin Capacitor 라이브 업데이트 대안 비교 페이지에서 HTML 텍스트 조각입니다. (부모 키 `alternatives_cta_questions`). 페이지/영역: Capacitor live-update 대안 비교 페이지. 역할: 장기적인 마케팅 또는 법률 문단. 표시되는 곳: 페이지 alternatives.astro. Capgo 제품/브랜드 및 개발자 용어를 정확하게 유지하십시오. 메시지 키 `alternatives_cta_questions` (대안 CTA 질문). | Appflow 비교/이동 마케팅 복사본. 역할: 장기적인 마케팅 또는 법률 문단. 표시되는 곳: 페이지 ionic-appflow.astro. Capgo 제품/브랜드 및 개발자 용어를 정확하게 유지하십시오. 메시지 키 `appflow_cta_questions` (Appflow CTA 질문). | Capawesome 비교 페이지. 역할: 장기적인 마케팅 또는 법률 문단. 표시되는 곳: 페이지 capwesome.astro. Capgo 제품/브랜드 및 개발자 용어를 정확하게 유지하십시오. 메시지 키 `capwesome_cta_questions` (Capwesome CTA 질문). | HTML 텍스트 조각은 더 긴 Capgo UI 문자열 (부모 키 `consulting_faq_subtitle`). 페이지/영역: 컨설팅 서비스 페이지. 역할: 섹션 서브 타이틀 또는 태그 라인. 표시되는 곳: 페이지 consulting.astro. Capgo 제품/브랜드 및 개발자 용어를 정확하게 유지하십시오. 메시지 키 `consulting_faq_subtitle` (컨설팅 FAQ 서브 타이틀). | Appflow 비교/이동 마케팅 복사본. 역할: 짧은 UI 레이블 또는 네비게이션 아이템. 표시되는 곳: 페이지 ionic-appflow.astro, 페이지 ionic-enterprise-plugins.astro, 페이지 solutions/ionic-enterprise-plugins.astro. 메시지 키 `appflow_plugins_or` (Appflow 플러그인 또는). webClientId 실패한 로그인 후에. 플러그인은 패키지 이름, 서명 SHA-1, 그리고 가려진

그것들을 Google Cloud Console에서 비교할 수 있도록.

필수 Google Cloud 설정

필수 Google Cloud 설정

Google Cloud 프로젝트에서 동일한 프로젝트에 두 가지 종류의 OAuth 2.0 클라이언트 ID가 필요합니다:클라이언트 유형사용하는 곳
설치 위치서버 / ID 토큰 청중webClientId in SocialLogin.initialize()
안드로이드, 한 개의 서명 키당Google이 당신의 APK가 Google을 호출할 수 있는지를 증명한다.Google Cloud Console에서만. 이 ID를 webClientId

A 일반적인 실수는 Android 클라이언트 ID를 webClientId에서 사용하는 것입니다. Credential Manager는 Web 클라이언트 ID가 필요합니다. Android 클라이언트는 단지 올바른 패키지 이름과 SHA-1이 콘솔에 등록되어 있는 경우에만 필요합니다.

당신이 테스트하는 빌드에 서명하는 각 인증서에 대해 하나의 Android OAuth 클라이언트를 생성하세요:

  • Debug: ./gradlew signingReport 데버그 빌드용으로.
  • Release: 실제로 설치하는 APK 또는 AAB에서.
  • Play App Signing: Play Console > 앱 무결성 > 앱 서명 키 인증서에서. Play Store 빌드용으로 필요합니다. 당신의 업로드 키 SHA-1이 이미 등록되어 있는 경우에도.

The applicationId 내 android/app/build.gradle 구글 소셜 로그인 플러그인은 Android OAuth 클라이언트 패키지 이름과 일치해야 합니다. 패키지 이름은 포함하여 정확히 일치해야 합니다. .debug suffix.

구글 OAuth 동의 화면이 테스트 모드일 경우, 테스트 사용자 > 테스트 사용자 목록에 테스트하는 모든 구글 계정을 추가하세요. 앱을 프로덕션으로 출시하는 것은 필수적이지 않습니다. email 그리고 profile scopes. 디지털 자산 링크 (Digital Asset Links)assetlinks.json)은 구글로 로그인하기를 통해 Credential Manager를 사용할 때 인증 정보가 필요하지 않습니다.

구글 클라우드 변경 사항은 몇 시간 동안 전파될 수 있습니다.

에러 28444: 개발자 콘솔이 올바르게 설정되지 않았습니다.

구글 소셜 로그인 플러그인 에러 28444: 개발자 콘솔이 올바르게 설정되지 않았습니다.

이 경우 거의 항상 Google이 설치된 APK 서명 인증서, 패키지 이름 및 combination을 거부하는 것을 의미합니다. webClientId. 이 체크리스트를 따라해 보세요:

  1. 확인 webClientId Web 애플리케이션 클라이언트 ID가 맞고 끝에 .apps.googleusercontent.com.
  2. 앱을 실행하고 실패를 재현한 후 Logcat에서 GoogleProvider, signingSha1=, 그리고 package=.
  3. Google Cloud Console > > Android OAuth 클라이언트를 열고 정확한 패키지 이름과 SHA-1을 확인하세요.
  4. 릴리스 빌드를 테스트하는 경우, 디버그 키 스토어만 등록하는 것이 아니라, 그 빌드의 SHA-1을 등록하세요.
  5. 릴리스 빌드를 Play Store를 통해 배포하는 경우, 또한 Play App Signing SHA-1을 등록하세요.
  6. Web과 Android 클라이언트가 동일한 Google Cloud 프로젝트에 존재하는지 확인하세요.
  7. consent 화면이 테스트 모드일 경우, Google 계정이 테스트 사용자인지 확인하세요.
  8. 재시도 후 콘솔 변경

USER_CANCELLED 구성 오류로 인해 디버그 빌드에서 계정을 선택한 후에도 SHA-1 또는 클라이언트 ID 불일치가 발생할 수 있습니다. 위의 콘솔 설정을 먼저 수정하세요.

설치한 빌드에서 SHA-1을 추출하세요

설치한 빌드에서 SHA-1을 추출하세요

디버그 또는 로컬 빌드:

터미널 창
cd android && ./gradlew signingReport

서명된 릴리스 APK:

터미널 창
keytool -printcert -jarfile android/app/release/app-release.apk

SHA-1을 Android OAuth 클라이언트에 추가하고 패키지 이름이 일치하는 동일한 서명 APK를 다시 설치한 후 다시 테스트하세요:

터미널 창
adb install android/app/release/app-release.apk

로그인 결과 읽기

로그인 결과 읽기 섹션

토큰은 다음과 같이 중첩되어 있습니다. result:

const login = await SocialLogin.login({ provider: 'google' });
const idToken = login.result?.idToken;

파이어베이스 인증을 위한 인증서를 생성할 때 사용하세요. idToken 웹 클라이언트 ID를 사용하세요. webClientId 만약 개발 SHA-1 인증서를 얻을 수 없다면, 커스텀 키 스토어를 사용하세요. initialize.

이 이슈 댓글 이 프로젝트에 키 스토어를 추가하는 방법을 설명합니다. Google Android 로그인에서 계속 진행하세요.

Keep going from Google Login on Android

구글 로그인(안드로이드)에서 계속하기

Google 로그인(안드로이드)를 사용 중이라면 Google 로그인(안드로이드) 인증 및 계정 흐름을 계획하고, Using @capgo/capacitor-social-login Using @capgo/capacitor-social-login Using @capgo/capacitor-social-login Using @capgo/capacitor-passkey Using @capgo/capacitor-passkey Using @capgo/capacitor-native-biometric Using @capgo/capacitor-native-biometric Using @capgo/capacitor-native-biometric 두 단계 인증 두 단계 인증 구현에 대한 구체적인 정보입니다.