跳转至正文

Android 端 Supabase Google Login

GitHub

本指南将帮助你在 Android 上将 Google Sign-In 与 Supabase Authentication 进行集成。前提是你已经完成了:

完整实现可在 示例应用的 supabaseAuthUtils.ts 文件。本指南介绍其核心概念及使用方法。

使用 Authentication Helper

“使用 Authentication Helper”章节

该 authenticateWithGoogleSupabase 函数负责处理整个身份验证流程:

import { authenticateWithGoogleSupabase } from './supabaseAuthUtils';
const result = await authenticateWithGoogleSupabase();
if (result.success) {
console.log('Signed in:', result.user);
// Navigate to your authenticated area
} else {
console.error('Error:', result.error);
}

有关身份验证流程(包括 nonce 生成、JWT 验证和 Supabase 登录)的详细说明,请参阅 常规设置指南中的“工作原理”部分.

欲查看完整的 code 参考文档,请参阅 完成常规设置指南中的 Code 参考章节.

nonce 实现遵循以下模式: React Native Google Sign In 文档:

  • rawNonce 发送至 Supabase 的 signInWithIdToken()
  • Supabase 会对以下内容进行哈希处理: rawNonce 并将其与以下内容进行比对: nonceDigest 该内容包含在 Google Sign-In 的 ID token 中
  • nonceDigest (SHA-256 哈希,十六进制编码)会传给 nonce Google Sign-In API 中的参数

实现中包含自动重试逻辑:

  • 如果首次 JWT 验证失败,系统会执行登出并重试一次
  • 这可以处理缓存 token 可能包含错误 nonce 的情况
  • 如果重试仍然失败,则返回错误

如果身份验证失败:

  • Audience 无效:请确保 Google Cloud Console 和 Supabase 中的 Google Client ID 一致
  • Nonce 不匹配:检查 console logs —— 函数会自动重试,但如有必要,你可以先手动退出登录
  • Token 验证失败:请确保使用 mode: 'online' 在 initialize 调用中获取 idToken
  • 查看 示例应用 code 供参考

继续完成 Android 端 Supabase Google Login 配置

标题为“继续完成 Android 端 Supabase Google Login 配置”的部分

如果你正在使用 Android 端 Supabase Google Login 规划身份验证和账户流程,并将它与 使用 @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 中的实现细节,以及 双重身份验证 了解双因素认证中的实现细节。