跳转到正文

Supabase 集成简介

GitHub

本教程将指导你通过 Capacitor Social Login 插件设置 Supabase Authentication。借助此集成,你可以在移动端使用原生社交登录服务商(Google、Apple、Facebook、Twitter),同时用 Supabase Auth 处理后端身份验证,并用 PostgreSQL 存储数据。

  • 如何配置 Supabase 身份验证
  • 如何将 Capacitor Social Login 插件与 Supabase Auth 集成
  • Android、iOS 和 Web 的平台专属配置
  • 如何为 Supabase 安全处理 nonce

开始前,请确保你已准备好:

  1. 一个 Supabase 项目

    • 在以下地址创建项目: Supabase 控制台
    • 启用 Google OAuth 提供商
    • 获取你的 Supabase 项目 URL 和 anon key
  2. Supabase JS SDK

    • 在项目中安装 Supabase:
      终端窗口
      npm install @supabase/supabase-js
  3. 一个 Capacitor 项目

    • 一个现有的 Capacitor 应用
    • 已安装 Capacitor Social Login 插件:
      终端窗口
      npm install @capgo/capacitor-social-login
      npx cap sync
  4. 各平台 Google 配置

仓库中提供了一个完整的可运行示例:

Code 仓库: 您可以在这里找到 code 仓库

示例应用演示了:

  • 使用 Supabase 进行邮箱/密码身份验证
  • Google 登录集成(Android、iOS 和 Web)
  • 使用 Supabase PostgreSQL 表实现简单的键值存储
  • 使用行级安全(RLS)存储用户特定数据

出于安全考虑,Supabase 需要特殊的 nonce 处理。实现流程如下: React Native Google Sign In 文档:

  • 生成一个 rawNonce (URL 安全的随机字符串)
  • 用 SHA-256 哈希后得到 nonceDigest
  • 传入 nonceDigest 传给 Google Sign-In
  • 传入 rawNonce 传给 Supabase(Supabase 会在内部哈希后比对)

示例实现包含 JWT 验证,以确保:

  • Token 的 audience 与您配置的 Google Client ID 匹配
  • Nonce 与预期的摘要匹配
  • 验证失败时自动重试(对 iOS 尤为重要)
  • iOS:Token 缓存可能导致 nonce 问题——实现会自动处理
  • Web 端:必须调用 isLoggedIn() 在挂载时处理 OAuth 重定向
  • Android: 配置 SHA-1 指纹的标准实现

继续阅读配置指南:

如果你正在使用 Supabase 集成简介 用来规划身份验证和账户流程,并将它与 使用 @capgo/capacitor-social-login 关于使用 @capgo/capacitor-social-login 的原生能力, @capgo/capacitor-social-login 在 @capgo/capacitor-social-login 中查看实现细节, @capgo/capacitor-passkey 有关 @capgo/capacitor-passkey 的实现细节, @capgo/capacitor-native-biometric 以及 @capgo/capacitor-native-biometric 中的实现细节, 双因素认证 有关双重身份验证的实现细节。