在Flutter中实现Firebase登录,主要步骤如下:
1. 配置Firebase项目
- 在Firebase控制台创建项目
- 添加Android/iOS应用并下载配置文件:
- Android:
google-services.json
- iOS:
GoogleService-Info.plist
2. 添加依赖
在 pubspec.yaml 中添加:
dependencies:
firebase_core: ^2.24.0
firebase_auth: ^4.17.3
google_sign_in: ^6.1.5
3. 初始化Firebase
在 main.dart 中:
import 'package:firebase_core/firebase_core.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(MyApp());
}
4. 实现Google登录
import 'package:firebase_auth/firebase_auth.dart';
import 'package:google_sign_in/google_sign_in.dart';
class AuthService {
final FirebaseAuth _auth = FirebaseAuth.instance;
final GoogleSignIn _googleSignIn = GoogleSignIn();
Future<User?> signInWithGoogle() async {
try {
final GoogleSignInAccount? googleUser = await _googleSignIn.signIn();
final GoogleSignInAuthentication googleAuth =
await googleUser!.authentication;
final AuthCredential credential = GoogleAuthProvider.credential(
accessToken: googleAuth.accessToken,
idToken: googleAuth.idToken,
);
final UserCredential userCredential =
await _auth.signInWithCredential(credential);
return userCredential.user;
} catch (e) {
print("Google登录失败: $e");
return null;
}
}
Future<void> signOut() async {
await _googleSignIn.signOut();
await _auth.signOut();
}
}
5. 在UI中使用
FloatingActionButton(
onPressed: () async {
User? user = await AuthService().signInWithGoogle();
if (user != null) {
print("登录成功: ${user.displayName}");
}
},
child: Text('Google登录'),
)
其他登录方式
类似地可以实现:
- 邮箱/密码:使用
createUserWithEmailAndPassword()和signInWithEmailAndPassword()
- 手机号:使用
verifyPhoneNumber()
- 其他第三方:Facebook、Apple等
注意事项
- 确保正确配置Firebase控制台中的认证方法
- 在对应平台配置签名证书(Android)和URL方案(iOS)
- 处理登录状态监听:
FirebaseAuth.instance.authStateChanges()
这样就能快速实现Firebase认证功能。记得根据实际需求处理错误状态和用户界面反馈。