在 iPhone 上使用 Google 登录(本地 Metro 服务器 + 开发构建) - 第 5/7 部分:Expo Router 设置

发布: (2026年1月15日 GMT+8 09:52)
2 min read
原文: Dev.to

Source: Dev.to

快速回顾!

从第 1‑4 步,我们已经完成了:

设置路由

在此步骤中,我们使用 Expo Router “Protected” 路由(在 Expo Router SDK 53 之后可用)来保护受限页面。
根布局现在使用 ClerkProvider 包裹整个应用。

ClerkProvider 的根布局

// _layout.tsx
export default function RootLayout() {
  const publishableKey =
    process.env.EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY ??
    EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY;

  if (!publishableKey) {
    throw new Error(
      "Missing EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY. Set it in your .env (see Clerk Expo quickstart) or in env.ts."
    );
  }

  return (
    
      
    
  );
}

带受保护屏幕的导航

// _layout.tsx
function RootLayoutNav() {
  const { isLoaded, isSignedIn } = useAuth();
  const isLoggedIn = isLoaded && isSignedIn;

  return (
    
      {/* Only available when NOT logged in */}
      
        
      

      {/* Only available when logged in */}
      
        
      

      {/* Public screens */}
      
    
  );
}

必要的导入

// _layout.tsx
import { ClerkProvider, useAuth } from "@clerk/clerk-expo";
import { tokenCache } from "@clerk/clerk-expo/token-cache";
import { Stack } from "expo-router";
import { EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY } from "../env";

目录结构

(详细信息请参阅介绍。)

OAuth 原型应用目录结构

参考

有关 Expo Router 受保护路由的更多细节,请参阅:Expo Router – Protected routes

Back to Blog

相关文章

阅读更多 »