📱 Регистрация по телефону в Supabase (OTP)

Инструкция по настройке беспарольного входа по номеру телефона (One-Time Password) в связке Supabase + FlutterFlow.

1. Настройка на стороне Supabase

  1. Перейдите в Authentication Providers Phone.
  2. Включите провайдера и выберите SMS-провайдера (например, Twilio или MessageBird) для отправки кодов.
  3. Убедитесь, что опция “Confirm Phone” включена.

2. Реализация во FlutterFlow (Custom Actions)

Для работы с OTP потребуются два кастомных действия: отправка кода и его проверка.

Шаг А: Запрос кода (getPhoneOtp)

Аргументы: phone (String).

import 'package:supabase_flutter/supabase_flutter.dart';
 
Future getPhoneOtp(String phone) async {
 final supabase = Supabase.instance.client;
 await supabase.auth.signInWithOtp(
 phone: phone,
 shouldCreateUser: true, // Автоматически создает пользователя, если его нет
 );
}

Шаг Б: Проверка кода (verifyPhoneOtp)

Аргументы: phone (String), token (String).

import 'package:supabase_flutter/supabase_flutter.dart';
 
Future<bool> verifyPhoneOtp(String phone, String? token) async {
 final supabase = Supabase.instance.client;
 try {
 final AuthResponse res = await supabase.auth.verifyOTP(
 type: OtpType.sms,
 token: token ?? "",
 phone: phone,
 );
 return res.session != null;
 } on AuthException catch (e) {
 print('Auth exception: ${e.message}');
 return false;
 } catch (error) {
 print('Unexpected error: $error');
 return false;
 }
}

🔗 Видео-инструкции


Автор контента: @flutterzer0

📺 Практика (Видео)

📺 Практика и примеры