AppleProvider class

애플 로그인 Provider

Sign in with Apple을 위한 Provider입니다.

주요 제약사항

1. 지원 플랫폼

  • iOS 13+
  • macOS 10.15+
  • Android, Web: 미지원

2. 토큰 갱신 불가

Apple은 authorizationCode일회용으로 제공합니다. 클라이언트에서 토큰 갱신이 불가능하며, 서버에서 이 코드로 refresh token을 발급받아 관리해야 합니다.

// ❌ 작동하지 않음
await kAuth.refreshToken(AuthProvider.apple);

// ✅ 서버에서 처리
final serverToken = await myServer.exchangeAppleCode(
  result.accessToken!,  // authorizationCode
);

3. 연결 해제는 서버에서만 가능

Apple REST API를 통해서만 연결 해제가 가능합니다.

// ❌ 에러 반환
await kAuth.unlink(AuthProvider.apple);

// ✅ 서버 API 호출
await myServer.revokeAppleToken(userId);

4. 이름은 첫 로그인 시에만 제공

재로그인 시 givenName, familyNamenull입니다. 첫 로그인 시 서버에 저장해두어야 합니다.

result.onSuccess((user) {
  // 첫 로그인이면 이름 저장
  if (user.displayName != null) {
    saveNameToServer(user.displayName);
  }
});

토큰 구조

토큰 설명
accessToken authorizationCode (일회용, 서버 교환용)
idToken identityToken (JWT, 사용자 정보 포함)
refreshToken 미제공

사용 예제

final result = await kAuth.signIn(AuthProvider.apple);
result.fold(
  onSuccess: (user) {
    // 첫 로그인이면 이름 저장
    if (user.displayName != null) {
      saveToServer(user.displayName);
    }
    // authorizationCode로 서버에서 토큰 발급
    final serverToken = await myServer.exchangeAppleCode(
      result.accessToken!,
    );
  },
  onFailure: (failure) => print(failure.message),
);
Implemented types

Constructors

AppleProvider(AppleConfig config)

Properties

config AppleConfig
final
hashCode int
The hash code for this object.
no setterinherited
runtimeType Type
A representation of the runtime type of the object.
no setterinherited

Methods

initialize() Future<void>
초기화 (별도 초기화 필요 없음)
override
isAvailable() Future<bool>
애플 로그인 지원 여부 확인
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
refreshToken() Future<AuthResult>
애플 토큰 갱신 (지원하지 않음)
override
signIn() Future<AuthResult>
애플 로그인 실행
override
signOut() Future<AuthResult>
애플 로그아웃 (클라이언트에서 세션만 정리)
override
toString() String
A string representation of this object.
inherited
애플 연결 해제 (서버사이드에서만 가능)
override

Operators

operator ==(Object other) bool
The equality operator.
inherited