> ## Documentation Index
> Fetch the complete documentation index at: https://supastack.dev/llms.txt
> Use this file to discover all available pages before exploring further.
> For the full documentation corpus in one file, fetch: https://supastack.dev/llms-full.txt

# ネイティブ認証

モバイルでブラウザ復帰経路と保存済みセッションを扱う。

## インストールとセットアップ

手順の前に、[始める前に](https://supastack.dev/ja/docs/web/before-you-start.md) と [ターミナルの基本](https://supastack.dev/ja/docs/web/terminal-basics.md) をお読みください。これらの手順では、VS Code で完全な supastack モノリポジトリを開いたことが前提となっています。そのルート package.json はリポジトリのルートをマークします。 pnpm コマンドでは、ワークスペース パッケージはアプリまたは共有コード フォルダーです。この製品では、ワークスペースはチームのデータ コンテナであり、セキュリティ境界です。 corepack pnpm --filter ... コマンドがルートから実行されている間にモノリポジトリから 1 つのパッケージを選択します。同期されたモバイル フォルダーまたはデスクトップ フォルダーのみを開いた場合、そのフォルダーには Web バックエンド、Docker セットアップ、またはルート スクリプトが含まれていません。このモノリポジトリまたはアクセス可能なホスト サーバーからバックエンドを実行し、プラットフォーム フォルダー独自のスクリプトを使用します。環境変数は、ローカルの .env ファイルまたはホスティング ダッシュボードに保存される名前付き設定です。変更後に関連するアプリを再起動し、NEXT_PUBLIC_ および EXPO_PUBLIC_ 値にサーバー シークレットが含まれないようにします。

1. VS Code で apps/mobile/src/auth/client.ts および apps/mobile/src/auth/mobile-auth-configuration.ts を開いて、既存のサインイン フローを見つけます。

2. EXPO_PUBLIC_API_URL と EXPO_PUBLIC_APP_SCHEME を apps/mobile/.env.local に配置し、Web サーバーが apps/web/.env.local. に独自の設定を持っていることを確認します。

3. ルートから corepack pnpm --filter @supastack/web dev を使用して Web を開始し、別の端末で corepack pnpm --filter @supastack/mobile start を使用して Expo を開始します。予想通り: テスト サインインによりブラウザーが開き、モバイル アプリに戻ります。物理的な電話では、コンピューターの到達可能な Wi-Fi/LAN アドレスを API に使用します。 Phone-localhost は電話自体を意味します。

モバイルアプリは Better Auth Expo 統合とネイティブ安全ストレージを使います。API オリジンとアプリスキームは、ネイティブ設定と認証サーバーの許可された復帰フローに一致しなければなりません。

```
EXPO_PUBLIC_API_URL=https://your-api.example
EXPO_PUBLIC_APP_SCHEME=supastack
```


## コピーするコマンド

コメントに従って、コマンドがどのフォルダーで実行されるかを確認します。 2 つのターミナルにラベルが付いている場合は、2 つのターミナル ウィンドウを開き、2 番目のコマンドを使用している間、最初のコマンドを実行し続けます。

```
# Terminal 1 — Web API (from the monorepo root):
corepack pnpm --filter @supastack/web dev

# Terminal 2 — Expo app (from the monorepo root):
corepack pnpm --filter @supastack/mobile start
```


## 実装ワークフロー

Web Cookie の仮定をモバイルにコピーするのではなく、既存のネイティブ認証クライアントに従ってください。設定されたブラウザフロー経由でプロバイダー認証を開き、そのコールバックを処理し、保護されたアクションを提示する前に認証済みセッションを解決します。

キャンセルされたサインインと成功したサインインを明確に区別してください。メンバーは「設定 → セキュリティ」で生体認証アプリロック（`apps/mobile/src/security/app-lock.ts` の Face ID、Touch ID、または指紋認証）を有効にしてフォアグラウンド復帰時にロックをかけられます。サインアウト時には前のユーザーのローカル表示状態とワークスペース単位のオフライン読み取りキャッシュ（`apps/mobile/src/offline/`）を消去し、サーバーセッションが保護された操作を実行できなくなることを確認してください。


## 検証とトラブルシューティング

サインインでブラウザーは開くが、アプリに戻らない場合は、EXPO_PUBLIC_APP_SCHEME が apps/mobile/app.config.ts. のスキームと一致することを確認します。アプリがサーバーにアクセスできない場合は、localhost をコンピューターの LAN アドレスに置き換え、両方のデバイスが同じネットワークを使用していることを確認し、編集後に Expo を再起動します。 apps/mobile/.env.local. Expo Go は UI ですプレビュー;ネイティブの購入承諾には、EAS 開発ビルドが必要です。

ターゲットビルドでコールドスタートコールバック、実行中アプリへの復帰、キャンセルされたログイン、期限切れセッションを実行します。ブラウザが戻ってもアプリがログアウトのままなら、プロバイダー設定を変える前にスキーム一致と API 到達性を検査してください。


設定を続けるには、[モバイルのentitlement](https://supastack.dev/ja/docs/mobile/entitlements.md)をご覧ください。


## 次へ

[モバイル API](https://supastack.dev/ja/docs/mobile/api.md)
