📱 Регистрация по телефону в 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