flutter_telegram_auth 0.1.6
flutter_telegram_auth: ^0.1.6 copied to clipboard
A Flutter plugin for integrating Telegram Login across Android, iOS, and Web. Uses native SDKs for mobile without webviews.
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter_telegram_auth/flutter_telegram_auth.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
@override
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
String _status = 'Not logged in';
@override
void initState() {
super.initState();
// SDK'ni ishga tushirish
const String clientId = '8917418534';
// Platformaga mos redirect URI'lar
final String redirectUri;
if (Platform.isAndroid) {
redirectUri = 'https://app838164528-login.tg.dev/';
} else if (Platform.isIOS) {
redirectUri = 'https://app2747532763-login.tg.dev/';
} else {
// Web yoki boshqa platformalar uchun
redirectUri = 'https://app$clientId-login.tg.dev/';
}
FlutterTelegramAuth.init(clientId: clientId, redirectUri: redirectUri, scopes: ['openid', 'profile', 'phone']);
}
void _login() async {
try {
final idToken = await FlutterTelegramAuth.login();
if (idToken != null) {
// Ma'lumotlarni yechib olish
final user = FlutterTelegramAuth.getLocalUserFromToken(idToken);
final firstName = user?.firstName;
setState(() {
_status = 'Success! Welcome, $firstName\n\nJWT Token: $idToken';
});
}
} catch (e) {
print(e);
setState(() {
_status = 'Error: $e';
});
}
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: const Text('Telegram Auth Example')),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Padding(
padding: const EdgeInsets.all(5.0),
child: Text(_status, textAlign: TextAlign.center, maxLines: 5),
),
const SizedBox(height: 10),
ElevatedButton(onPressed: _login, child: const Text('Login with Telegram')),
],
),
),
bottomNavigationBar: (Platform.isAndroid || Platform.isIOS)
? Container(
margin: const EdgeInsets.all(16),
padding: const EdgeInsets.all(12),
decoration: BoxDecoration(
color: Colors.amber.shade100,
borderRadius: BorderRadius.circular(8),
border: Border.all(color: Colors.amber.shade800),
),
child: Text(
Platform.isAndroid
? '⚠️ ATTENTION:\n'
'If the SHA-256 fingerprint in BotFather does not match your device\'s fingerprint, '
'Telegram will not be able to redirect back to the app.\n\n'
'Please use your own bot and SHA-256 for testing.'
: '⚠️ ATTENTION:\n'
'Ensure you have added "Associated Domains" in Xcode with your bot\'s domain '
'(e.g., applinks:appXXXX-login.tg.dev). Otherwise, the redirect will not work.\n\n'
'Please use your own bot for testing.',
textAlign: TextAlign.center,
style: const TextStyle(color: Colors.black87, fontSize: 13),
),
)
: null,
),
);
}
}