Files
FinanceApp/finance_app/lib/auth/telegram_auth.dart
T
2025-05-12 16:06:22 +03:00

42 lines
2.1 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_web_auth/flutter_web_auth.dart'; // Для аутентификации через веб
import 'package:shared_preferences/shared_preferences.dart'; // Импортируем для работы с локальным хранилищем
import 'package:http/http.dart' as http; // Для HTTP запросов
import 'dart:convert'; // Для работы с JSON
class TelegramAuth {
static const String _telegramBotToken = 'YOUR_TELEGRAM_BOT_TOKEN'; // Замените на ваш токен бота
static const String _telegramLoginUrl = 'https://telegram.me/YOUR_BOT_NAME'; // Замените на URL вашего бота
// Метод для аутентификации через Telegram
static Future<void> loginWithTelegram(BuildContext context) async {
final result = await FlutterWebAuth.authenticate(
url: '$_telegramLoginUrl',
callbackUrlScheme: 'yourapp', // Замените на ваш callback URL scheme
);
// Получаем код авторизации из URL
final code = Uri.parse(result).queryParameters['code'];
// Отправляем код на сервер для проверки
final response = await http.post(
Uri.parse('https://api.telegram.org/bot$_telegramBotToken/getMe'),
body: {'code': code},
);
if (response.statusCode == 200) {
// Успешная аутентификация
final userData = json.decode(response.body);
// Сохраняем данные пользователя в локальном хранилище
final prefs = await SharedPreferences.getInstance();
await prefs.setInt('userId', userData['id']); // Сохраняем ID пользователя
await prefs.setString('userName', userData['name']); // Сохраняем имя пользователя
await prefs.setString('userEmail', userData['email']); // Сохраняем email пользователя
print('User data: $userData');
} else {
// Ошибка аутентификации
print('Error logging in with Telegram: ${response.body}');
}
}
}