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, familyName이 null입니다.
첫 로그인 시 서버에 저장해두어야 합니다.
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
-
unlink(
) → Future< AuthResult> -
애플 연결 해제 (서버사이드에서만 가능)
override
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited