概要

Apple Sign In を唯一の認証手段とし、Supabase Auth と連携してセッション管理を行う。 キーチェーン経由でセッション永続化、起動時に自動でセッション復元。

関連画面

処理フロー

sequenceDiagram participant U as User participant V as LoginView participant ASS as AppleSignInService participant SP as Supabase Auth participant AVM as AuthViewModel participant DB as Supabase users表 U->>V: Apple Sign Inタップ V->>ASS: signInRequested() ASS->>ASS: nonce生成 + SHA256ハッシュ ASS->>U: Apple ID認証ダイアログ U-->>ASS: 認証承認 + idToken ASS->>SP: signInWithIdToken(idToken, nonce) SP-->>ASS: セッション ASS-->>AVM: 完了通知 AVM->>DB: fetchOrCreateUser(authId) DB-->>AVM: AppUser alt 新規ユーザー AVM->>V: authState=.needsSetup V->>U: SetupProfileView表示 else 既存ユーザー AVM->>V: authState=.authenticated V->>U: MainTabView表示 end

セッション管理

ビジネスルール

外部連携

連携先用途備考
Apple Sign InidToken の発行AuthenticationServices フレームワーク
Supabase AuthsignInWithIdToken / セッション管理RLS の前提
Keychainセッショントークン永続化Supabaseクライアントが自動処理

エラー処理

発生条件対応
Apple Sign Inキャンセルサイレント、再試行を促す
nonce検証失敗「サインインに失敗しました」
Supabase通信失敗RetryHelperで再試行
セッション期限切れLoginView へ自動遷移

実装メモ

変更履歴

バージョン日付変更内容
1.02026-05-09初版作成