Эффективное управление пользователями во Flutter с помощью облачных функций Firebase и Node.js

В этой статье блога мы рассмотрим различные методы эффективного удаления непроверенных пользователей в приложении Flutter с использованием облачных функций Firebase и Node.js. Мы углубимся в примеры кода и объясним каждый метод в разговорной форме, чтобы вам было легче его понять и реализовать в ваших собственных проектах. Итак, начнем!

Метод 1: запланированная функция
Один из способов удалить непроверенных пользователей — настроить запланированную функцию, которая запускается через определенные промежутки времени. Эта функция может запрашивать службу аутентификации Firebase, чтобы найти пользователей, которые не подтвердили свои учетные записи в течение определенного периода времени, и соответствующим образом удалить их. Вот пример того, как это можно реализовать с помощью Node.js:

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
exports.deleteUnverifiedUsers = functions.pubsub.schedule('every 24 hours').onRun(async (context) => {
  const cutoffDate = Date.now() - (24 * 60 * 60 * 1000); // 24 hours ago
  const unverifiedUsers = await admin.auth().listUsers(1000, undefined, 'email_verified=false');

  unverifiedUsers.users.forEach(async (user) => {
    if (user.metadata.creationTime < cutoffDate) {
      await admin.auth().deleteUser(user.uid);
      console.log(`Deleted unverified user: ${user.email}`);
    }
  });

  return null;
});

Метод 2: триггерная функция
Другой подход заключается в настройке триггерной функции, которая запускается всякий раз, когда пользователь регистрируется, но не может подтвердить свою учетную запись в течение определенного периода времени. Функция может прослушивать события триггера аутентификации Firebase и автоматически удалять непроверенного пользователя. Вот пример:

exports.deleteUnverifiedUser = functions.auth.user().onCreate(async (user) => {
  const verificationDeadline = Date.now() - (24 * 60 * 60 * 1000); // 24 hours ago

  if (user.metadata.creationTime < verificationDeadline && !user.emailVerified) {
    await admin.auth().deleteUser(user.uid);
    console.log(`Deleted unverified user: ${user.email}`);
  }
});

Метод 3: конечная точка HTTP
Вы также можете создать конечную точку HTTP, которая может запускаться из вашего приложения Flutter всякий раз, когда вам нужно удалить непроверенных пользователей. Вот пример того, как вы можете определить облачную функцию HTTP с помощью Node.js:

exports.deleteUnverifiedUser = functions.https.onRequest(async (req, res) => {
  const userId = req.query.userId;

  try {
    await admin.auth().deleteUser(userId);
    res.status(200).send('User deleted successfully.');
  } catch (error) {
    res.status(500).send('Error deleting user.');
  }
});

В этой статье мы рассмотрели различные методы удаления непроверенных пользователей в приложении Flutter с использованием облачных функций Firebase и Node.js. Мы рассмотрели реализацию запланированных функций, триггерных функций и конечных точек HTTP. Не забудьте выбрать метод, который лучше всего соответствует требованиям вашего приложения и потоку управления пользователями. Эффективно управляя непроверенными пользователями, вы можете поддерживать чистую и безопасную базу пользователей для вашего приложения Flutter.