🚀 Авторизация в Supabase через Google
Инструкция по настройке Google Auth в связке с Supabase для Web и мобильных платформ.
🟢 1. Базовая настройка (Логика и Алгоритм)
Для настройки Google-авторизации во FlutterFlow недостаточно просто включить переключатель. Необходимо прописать соответствие (Mapping) между OAuth-провайдером и базой данных.
- Google Cloud Console: Создайте OAuth 2.0 Client ID. Для Web, Android и iOS нужны разные ID.
- Supabase Auth: Вставьте полученные Client ID и Secret в раздел
Authentication→Providers→Google. - FlutterFlow: Используйте действие
Log Inс провайдеромGoogle.
Безопасность
Никогда не храните
Google Client Secretв клиентском коде. Supabase сам обрабатывает секреты на стороне сервера, вам нужно только передать ID.
🛠 2. Нюансы для Web (Промежуточная страница)
Во FlutterFlow при использовании Supabase Log In для Web, действия (Actions), идущие сразу после логина, могут не выполняться из-за специфики редиректа.
Решение:
- Создайте промежуточную страницу (например,
authLoading). - В Supabase (Authentication → URL configuration) установите
Site URLна эту страницу. - На странице
authLoading(On Page Load) добавьте логику проверки:- Если пользователь новый → переход на страницу профиля.
- Если старый → сохранение данных в App State и переход на Home.
📱 3. Настройка Android (SHA-ключи)
Это критически важный этап для мобильных приложений. При публикации в Play Store Google переподписывает приложение своими ключами, и именно их нужно прописать в консолях.
Получение ключей из Google Play Console:
- Перейдите в Настройка → Целостность приложения.
- Вкладка Подписание приложения.
- Скопируйте SHA-1 и SHA-256 отпечатки из секции “Сертификат ключа подписи приложения”.
Добавление в Firebase/Supabase:
- В Firebase Console (Настройки проекта) добавьте эти отпечатки для вашего Android-приложения.
- В FlutterFlow нажмите Regenerate config files.
- Выполните 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 по авторизации