본문 바로가기

Android에서 Apple Login

GitHub

Android에서 Apple 로그인 구현은 다소 비공식적인 방식입니다. Apple이 공식적으로 Sign in with Apple Android를 지원하지 않기 때문에, 솔루션이 약간 비공식적인(hacky) 방식입니다.

Android는 현재 Chrome Tabs를 사용하여 OAuth2 웹사이트를 표시합니다. 이 방식에는 다음과 같은 어려움이 있습니다:

  • 복잡한 설정
  • 백엔드가 필요합니다

Android에서의 동작 흐름 이해하기

“안드로이드에서의 흐름 이해” 섹션

안드로이드에서의 흐름을 다이어그램으로 설명하겠습니다:

이제 문제점과 흐름을 이해했으니, 설정을 시작해 보겠습니다.

Service ID 생성하기

“서비스 ID 생성” 섹션
  1. 에 로그인하세요 Apple Developer Portal.

  2. 클릭하세요 Identifiers.

    Apple Developer Portal의 Identifiers 섹션

    다음과 같은 화면이 나타납니다:

    Apple Developer Portal의 Identifiers 화면
    1. 이 필드가 다음과 같이 표시되는지 확인하세요: App IDs
    2. App ID를 찾을 수 있는지 확인하세요.
  3. 앱에 대해 Sign in with Apple 기능이 활성화되어 있는지 확인하세요

    1. 앱을 클릭하세요 목록에서 앱을 선택
    2. 다음 항목 확인 Sign in with Apple capability가 활성화되어 있습니다 Sign in with Apple capability 활성화 체크박스
    3. 활성화되어 있지 않으면 활성화하세요.
  4. 전체 목록으로 돌아가기 All Identifiers

    All Identifiers 내비게이션 버튼
  5. 클릭하세요 App Ids 그리고 다음으로 이동합니다: Services IDs

    Services IDs 섹션으로 이동
  6. 새 식별자 생성

    1. 더하기 버튼 클릭

      새 서비스 ID 추가 버튼
    2. 선택 Servcice IDs 그리고 클릭하세요: Continue

      Service ID 옵션 선택
    3. 설명과 식별자를 입력한 후 클릭 Continuie.

      Service ID 정보 입력
    4. 세부 정보를 확인한 후 클릭하세요 Register

      서비스 ID 등록 확인
    5. 새로 생성된 서비스를 클릭하세요

      새로 생성된 서비스 ID 선택
    6. 활성화: Sign in with Apple 옵션

      서비스 ID에 Sign in with Apple 활성화
    7. 다음 항목 구성 Sign In with Apple

      Sign in with Apple 버튼 구성
    8. 다음 항목 확인 Primary App ID 이전 단계에서 구성한 App ID로 설정되어 있는지

      Primary App ID 드롭다운 설정
    9. 백엔드를 호스팅할 도메인을 추가하세요.

      도메인 및 return URL 필드 설정
    10. 데이터를 확인하고 클릭하세요 Done

      도메인 및 return URL 설정 확인
    11. 클릭하세요 Continue

      서비스 설정 계속 버튼
    12. 클릭하세요 Save

      서비스 설정 저장 버튼
  1. 모두로 돌아가기 All Identifiers

    모든 식별자 내비게이션 버튼
  2. 클릭하세요 Keys

    Apple Developer Portal의 Keys 섹션
  3. 더하기 아이콘 클릭

    새 키 추가 버튼
  4. 키 이름 지정

    키 이름 필드 입력
  5. 선택 Sign in with Apple 그리고 클릭하세요: Configure

    키에 Sign in with Apple 활성화 및 설정
  6. 기본 App ID를 선택한 후 누르세요 Save

    키에 사용할 기본 App ID 선택
  7. 클릭하세요 Continue

    키 설정 계속 버튼
  8. 클릭하세요 Register

    키 생성 등록 버튼
  9. Key ID를 복사하고 키를 다운로드하세요.

    Key ID와 다운로드 버튼 화면
  10. 다운로드한 키를 찾아 백엔드 폴더에 저장하세요.

    다운로드한 키 파일

사용하려면 Login with Apple Android에서는 다음을 가져와야 합니다: Team ID. 이는 백엔드에서 사용됩니다.

  1. 다음으로 이동: 이 웹사이트 아래로 스크롤하여

  2. 다음 Team ID

    개발자 계정 내 Team ID 위치

앱 리다이렉트 설정

앱 리다이렉트 설정 섹션

다이어그램에서 보았듯이, 백엔드에서 다음 단계가 수행됩니다. Redirect back to the app이 작업에는 앱에 대한 수동 변경이 필요합니다.

  1. 다음을 수정하세요: AndroidManifest.xml
    1. 파일을 열고, 사용하겠습니다 AndroidStudio

      Android Studio의 AndroidManifest.xml 파일을
    2. 다음 MainActivity 열고 다음 Intent filter를 추가하세요

      MainActivity에 추가할 Intent filter code
      <intent-filter>
      <action android:name="android.intent.action.VIEW" />
      <category android:name="android.intent.category.DEFAULT" />
      <category android:name="android.intent.category.BROWSABLE" />
      <data android:scheme="capgo-demo-app" android:host="path" />
      </intent-filter>
  2. 다음을 수정하세요: MainActivity
    1. 다음 파일을 여세요 MainActivity

      Android Studio의 MainActivity.java 파일
    2. 다음 code을 추가하세요:

      딥 링크 처리를 위해 MainActivity에 추가할 Code
      @Override
      protected void onNewIntent(Intent intent) {
      String action = intent.getAction();
      Uri data = intent.getData();
      if (Intent.ACTION_VIEW.equals(action) && data != null) {
      PluginHandle pluginHandle = getBridge().getPlugin("SocialLogin");
      if (pluginHandle == null) {
      Log.i("Apple Login Intent", "SocialLogin login handle is null");
      return;
      }
      Plugin plugin = pluginHandle.getInstance();
      if (!(plugin instanceof SocialLoginPlugin)) {
      Log.i("Apple Login Intent", "SocialLogin plugin instance is not SocialLoginPlugin");
      return;
      }
      ((SocialLoginPlugin) plugin).handleAppleLoginIntent(intent);
      return;
      }
      super.onNewIntent(intent);
      }

Android에는 백엔드가 필수이지만, 백엔드 설정은 iOS에도 영향을 미칩니다. 예시 백엔드가 제공됩니다. 여기

이 예제는 다음을 제공합니다:

  • 간단한 JSON 데이터베이스
  • Apple 서버에서 JWT를 요청하는 방법
  • 간단한 JWT 검증

이 튜토리얼의 내용을 바탕으로 구성한 env 섹션의 모습은 다음과 같습니다:

  • ANDROID_SERVICE_ID = 서비스 ID
  • IOS_SERVICE_ID = 앱 ID
env: {
PRIVATE_KEY_FILE: "AuthKey_U93M8LBQK3.p8",
KEY_ID: "U93M8LBQK3",
TEAM_ID: "UVTJ336J2D",
ANDROID_SERVICE_ID: "ee.forgr.io.ionic.starter.service2",
IOS_SERVICE_ID: "me.wcaleniewolny.test.ionic.vue",
PORT: 3000,
REDIRECT_URI: "https://xyz.wcaleniewolny.me/login/callback",
BASE_REDIRECT_URL: "capgo-demo-app://path"
}

사용법은 login 함수는 바뀌지 않으며 iOS와 동일합니다. 자세한 내용은 해당 섹션을 참고하세요. 하지만, initialize 메서드는 약간 다릅니다.

await SocialLogin.initialize({
apple: {
clientId: 'ee.forgr.io.ionic.starter.service2',
redirectUrl: 'https://appleloginvps.wcaleniewolny.me/login/callback'
}
})
  1. App ID가 없다면 플러스(+) 버튼을 클릭하세요

    새 식별자 추가 + 버튼
  2. 선택 App IDs 그리고 Continue를 클릭하세요

    App IDs 유형 선택
  3. 유형을 클릭하세요 App 그리고 클릭하세요: Continue

    App 유형 선택
  4. 설명과 App ID를 입력하세요

    앱 설명과 Bundle ID 입력 중
  5. 활성화 Sign with Apple Capability

    Sign in with Apple Capability 활성화
  6. 클릭 Continue

    앱 등록 계속 버튼
  7. 상세 정보를 확인하고 클릭하세요 Register

    앱 등록 상세 정보 확인 중

Android에서 Apple 로그인 후 계속하기

“Android에서 Apple 로그인 후 계속하기” 섹션

사용 중이라면 Android에서 Apple 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단계 인증의 구현 세부 사항에 대해서는