🚀 Авторизация в Supabase через Google

Инструкция по настройке Google Auth в связке с Supabase для Web и мобильных платформ.

🟢 1. Базовая настройка (Логика и Алгоритм)

Для настройки Google-авторизации во FlutterFlow недостаточно просто включить переключатель. Необходимо прописать соответствие (Mapping) между OAuth-провайдером и базой данных.

  1. Google Cloud Console: Создайте OAuth 2.0 Client ID. Для Web, Android и iOS нужны разные ID.
  2. Supabase Auth: Вставьте полученные Client ID и Secret в раздел Authentication Providers Google.
  3. FlutterFlow: Используйте действие Log In с провайдером Google.

Безопасность

Никогда не храните Google Client Secret в клиентском коде. Supabase сам обрабатывает секреты на стороне сервера, вам нужно только передать ID.


🛠 2. Нюансы для Web (Промежуточная страница)

Во FlutterFlow при использовании Supabase Log In для Web, действия (Actions), идущие сразу после логина, могут не выполняться из-за специфики редиректа.

Решение:

  1. Создайте промежуточную страницу (например, authLoading).
  2. В Supabase (Authentication URL configuration) установите Site URL на эту страницу.
  3. На странице authLoading (On Page Load) добавьте логику проверки:
    • Если пользователь новый переход на страницу профиля.
    • Если старый сохранение данных в App State и переход на Home.

📱 3. Настройка Android (SHA-ключи)

Это критически важный этап для мобильных приложений. При публикации в Play Store Google переподписывает приложение своими ключами, и именно их нужно прописать в консолях.

Получение ключей из Google Play Console:

  1. Перейдите в Настройка Целостность приложения.
  2. Вкладка Подписание приложения.
  3. Скопируйте SHA-1 и SHA-256 отпечатки из секции “Сертификат ключа подписи приложения”.

Добавление в Firebase/Supabase:

  1. В Firebase Console (Настройки проекта) добавьте эти отпечатки для вашего Android-приложения.
  2. В FlutterFlow нажмите Regenerate config files.
  3. Выполните Deploy to Play Store.

💻 4. Кастомный анонимный вход (Custom Action)

Если вам нужен анонимный вход в Supabase (который не реализован в FF «из коробки»):

import 'package:supabase_flutter/supabase_flutter.dart';
 
Future<bool> signInAnonymously() async {
  final supabase = Supabase.instance.client;
  try {
    final AuthResponse res = await supabase.auth.signInAnonymously();
    return res.session != null;
  } on AuthException catch (e) {
    print('Auth exception: ${e.message}');
    return false;
  } catch (error) {
    print('Unexpected error: $error');
    return false;
  }
}

Автор контента: @brozaurus. Смотрите также: FAQ по авторизации