Flutter桌面端Firebase认证插件firebase_auth_desktop的使用
Flutter桌面端Firebase认证插件firebase_auth_desktop的使用
Firebase Auth for Flutter Desktop
该软件包是为Linux和Windows平台实现的FlutterFire。
注意: 此软件包覆盖了FlutterFire在macOS平台上的现有实现,用于开发目的。
开始使用
首先,请确保通过安装firebase_core
来初始化Firebase。
- 在项目的根目录下运行以下命令:
dart pub add firebase_auth_desktop
- 导入它:
import 'package:firebase_auth_desktop/firebase_auth_desktop.dart';
使用方法
该软件包是firebase_auth
的平台实现,您可以查看官方指南中的完整使用文档。
桌面端电话认证
在桌面端,电话认证与Web类似。
- 调用
signInWithPhoneNumber
方法,这将触发一个reCAPTCHA网页视图在单独的窗口中进行验证。完成后,用户会收到短信验证码。
FirebaseAuth auth = FirebaseAuth.instance;
// 等待用户完成reCAPTCHA并接收短信验证码
ConfirmationResult confirmationResult = await auth.signInWithPhoneNumber('+44 7123 123 456');
- 提示用户提供短信验证码,并确认它。
UserCredential userCredential = await confirmationResult.confirm('123456');
然而,目前有一个限制,用户接收到的短信包含您的应用名称,在Web上通常是您的认证域。但是,由于Firebase尚未完全支持桌面平台上的电话认证,当前实现会在消息中显示您的应用名称为127.0.0.1
,即本地主机IP地址。
示例代码
以下是完整的示例代码,展示如何在Flutter桌面端使用firebase_auth_desktop
插件。
// ignore_for_file: depend_on_referenced_packages, public_member_api_docs
import 'package:firebase_auth/firebase_auth.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:google_sign_in_dartio/google_sign_in_dartio.dart';
import 'package:yaru/yaru.dart';
import 'auth.dart';
import 'profile.dart';
FirebaseOptions get firebaseOptionsDefault {
if (defaultTargetPlatform == TargetPlatform.macOS) {
// 在macOS上使用iOS配置。
return const FirebaseOptions(
apiKey: 'AIzaSyAgUhHU8wSJgO5MVNy95tMT07NEjzMOfz0',
authDomain: 'react-native-firebase-testing.firebaseapp.com',
databaseURL: 'https://react-native-firebase-testing.firebaseio.com',
projectId: 'react-native-firebase-testing',
messagingSenderId: '448618578101',
appId: '1:448618578101:web:0b650370bb29e29cac3efc',
measurementId: 'G-F79DJ0VFGS',
);
} else {
// 在Linux、Windows和Web上使用Web配置。
return const FirebaseOptions(
apiKey: 'AIzaSyAgUhHU8wSJgO5MVNy95tMT07NEjzMOfz0',
authDomain: 'react-native-firebase-testing.firebaseapp.com',
databaseURL: 'https://react-native-firebase-testing.firebaseio.com',
projectId: 'react-native-firebase-testing',
messagingSenderId: '448618578101',
appId: '1:448618578101:web:0b650370bb29e29cac3efc',
measurementId: 'G-F79DJ0VFGS',
);
}
}
// 需要确保Firebase Auth模拟器正在本地运行,例如通过`melos run firebase:emulator`。
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(options: firebaseOptionsDefault);
await FirebaseAuth.instance.useAuthEmulator('localhost', 9099);
await GoogleSignInDart.register(
clientId: '448618578101-sg12d2qin42cpr00f8b0gehs5s7inm0v.apps.googleusercontent.com',
);
runApp(const AuthExampleApp());
}
/// 应用程序的入口点。
///
/// 返回一个[MaterialApp]。
class AuthExampleApp extends StatelessWidget {
const AuthExampleApp({Key? key}) : super(key: key);
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Firebase Example App',
darkTheme: yaruDark,
theme: yaruLight,
home: Scaffold(
body: LayoutBuilder(
builder: (context, constraints) {
return Row(
children: [
Visibility(
visible: constraints.maxWidth >= 1200,
child: Expanded(
child: Container(
height: double.infinity,
color: Theme.of(context).colorScheme.primary,
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
'Firebase Auth Desktop',
style: Theme.of(context).textTheme.headline4,
),
],
),
),
),
),
),
Expanded(
child: StreamBuilder<User?>(
stream: FirebaseAuth.instance.authStateChanges(),
builder: (context, snapshot) {
if (snapshot.hasData) {
return const ProfilePage();
}
return const AuthGate();
},
),
),
],
);
},
),
),
);
}
}
更多关于Flutter桌面端Firebase认证插件firebase_auth_desktop的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter桌面端Firebase认证插件firebase_auth_desktop的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个关于如何在Flutter桌面端应用中使用firebase_auth_desktop
插件进行Firebase认证的示例代码。这个示例将展示如何进行基本的用户注册和登录。
首先,确保你已经在你的Flutter项目中添加了firebase_auth
和firebase_auth_desktop
依赖。在pubspec.yaml
文件中添加以下依赖:
dependencies:
flutter:
sdk: flutter
firebase_core: ^1.10.0 # 或者最新版本
firebase_auth: ^3.3.3 # 或者最新版本
firebase_auth_desktop: ^0.2.0+3 # 或者最新版本,注意这个插件通常与firebase_auth一起使用
然后,运行flutter pub get
来安装依赖。
接下来,你需要在你的Firebase项目中配置应用以支持桌面端。这通常涉及到下载并配置Google服务文件(如GoogleService-Info.plist
对于macOS和google-services.json
对于Windows/Linux),并确保在Firebase控制台中启用了相应的认证方法(如Email/Password)。
以下是Flutter桌面端应用中使用firebase_auth_desktop
进行Firebase认证的示例代码:
import 'package:flutter/material.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_auth/firebase_auth.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化Firebase应用
await Firebase.initializeApp();
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Firebase Auth Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: AuthScreen(),
);
}
}
class AuthScreen extends StatefulWidget {
@override
_AuthScreenState createState() => _AuthScreenState();
}
class _AuthScreenState extends State<AuthScreen> {
final FirebaseAuth _auth = FirebaseAuth.instance;
String _email = '';
String _password = '';
String _message = '';
void _signUp() async {
try {
UserCredential result = await _auth.createUserWithEmailAndPassword(
email: _email,
password: _password,
);
User? user = result.user;
setState(() {
_message = '注册成功: ${user?.email}';
});
} catch (e) {
setState(() {
_message = e.message ?? '注册失败';
});
}
}
void _signIn() async {
try {
UserCredential result = await _auth.signInWithEmailAndPassword(
email: _email,
password: _password,
);
User? user = result.user;
setState(() {
_message = '登录成功: ${user?.email}';
});
} catch (e) {
setState(() {
_message = e.message ?? '登录失败';
});
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Firebase Auth Demo'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
TextField(
keyboardType: TextInputType.emailAddress,
decoration: InputDecoration(labelText: 'Email'),
onChanged: (value) {
_email = value;
},
),
SizedBox(height: 16),
TextField(
obscureText: true,
decoration: InputDecoration(labelText: 'Password'),
onChanged: (value) {
_password = value;
},
),
SizedBox(height: 24),
ElevatedButton(
onPressed: _signUp,
child: Text('注册'),
),
SizedBox(height: 16),
ElevatedButton(
onPressed: _signIn,
child: Text('登录'),
),
SizedBox(height: 24),
Text(
_message,
style: TextStyle(fontSize: 18, color: Colors.red),
),
],
),
),
);
}
}
在这个示例中,我们创建了一个简单的Flutter应用,包含两个按钮用于用户注册和登录。我们使用FirebaseAuth.instance
来访问Firebase认证服务,并通过createUserWithEmailAndPassword
和signInWithEmailAndPassword
方法处理注册和登录逻辑。
请注意,这个示例代码假设你已经在Firebase控制台中正确配置了Email/Password认证方法,并且你的Flutter项目已经正确配置了Firebase。如果你遇到任何问题,请确保检查Firebase配置和依赖版本。