Flutter社交媒体登录插件firebase_social_login的使用
Flutter社交媒体登录插件firebase_social_login的使用
Firebase Social Login Plugin 是一个用于简化 Flutter 应用程序中社交媒体登录集成的 Flutter 包。通过该插件,您可以轻松实现 Google、Facebook 和 Apple 账户的社交登录功能,而无需单独处理复杂的认证流程。
认证支持
| 功能/平台 | Android | iOS | Web | macOS | Windows | Linux |
|---|---|---|---|---|---|---|
| 邮箱 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 手机号码 | ✓ | ✓ | ✓ | × | × | × |
| 邮件链接 | ✓ | ✓ | × | × | × | × |
| 邮件验证 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 使用 Apple 登录 | ✓ | ✓ | ✓ | ✓ | × | × |
| 使用 Google 登录 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 使用 Twitter 登录 | × | × | × | × | × | × |
| 使用 Facebook 登录 | ✓ | ✓ | ✓ | ✓ | × | × |
注:
- 没有深度链接到应用,因此邮件验证链接会在网页上打开。
- 需要在浏览器中进行验证。
开始使用
连接您的 Flutter 应用到 Firebase
要将您的 Flutter 应用连接到 Firebase,请遵循以下步骤:
步骤 1: 创建 Firebase 项目
- 前往 Firebase 控制台。
- 点击“添加项目”,然后按照设置说明创建新的 Firebase 项目。
- 创建完成后,您会被重定向到项目的控制面板。
步骤 2: 注册您的应用到 Firebase
对于 Android:
- 点击 Android 图标以向项目中添加 Android 应用。
- 输入您的 Android 包名(通常可以在 Flutter 项目的
android/app/build.gradle文件中找到)。 - 可选地,您还可以提供其他详细信息,如应用别名和调试签名证书的 SHA-1。
- 点击“注册应用”以下载
google-services.json文件。
对于 iOS:
- 点击 iOS 图标以向项目中添加 iOS 应用。
- 输入您的 iOS Bundle ID(通常可以在 Flutter 项目的
ios/Runner.xcodeproj/project.pbxproj文件中找到)。 - 可选地,您还可以提供其他详细信息,如应用别名。
- 点击“注册应用”以下载
GoogleService-Info.plist文件。
步骤 3: 在您的 Flutter 项目中添加 Social Login 插件
在 pubspec.yaml 文件中添加以下依赖项:
dependencies:
social_login_plugin: ^0.0.4
步骤 4: 在使用任何社交媒体登录功能之前初始化 Firebase
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await SocialLoginPlugin().iniFirebase();
runApp(MyApp());
}
使用 Google 登录
var googleData = await SocialLoginPlugin().signInWithGoogle();
使用 Facebook 登录
var facebookData = await SocialLoginPlugin().signInWithFacebook();
使用 Apple 登录
var appleData = await SocialLoginPlugin().signInWithApple();
示例代码
以下是完整的示例代码,展示了如何在 Flutter 应用中实现上述功能。
import 'dart:developer';
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:social_login_plugin/social_login_plugin.dart';
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await SocialLoginPlugin().iniFirebase();
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
[@override](/user/override)
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
final _socialLoginPlugin = SocialLoginPlugin();
[@override](/user/override)
void initState() {
super.initState();
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Plugin example app'),
),
body: Padding(
padding: const EdgeInsets.all(40.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
socialLoginButtonWidget(
title: 'Google',
onPressed: () async {
var data = await _socialLoginPlugin.signInWithGoogle();
log("data : ${data.toString()}");
}),
const SizedBox(
height: 20,
),
socialLoginButtonWidget(
title: 'Facebook',
onPressed: () async {
var data = await _socialLoginPlugin.signInWithFacebook();
log("data : ${data.toString()}");
}),
const SizedBox(
height: 20,
),
socialLoginButtonWidget(
title: 'Apple',
onPressed: () async {
var data = await _socialLoginPlugin.signInWithApple();
log("data : ${data.toString()}");
}),
],
),
),
),
);
}
Widget socialLoginButtonWidget(
{required String title, required Function() onPressed}) {
return ElevatedButton(
onPressed: () {
onPressed();
},
style: ElevatedButton.styleFrom(
elevation: 12.0, textStyle: const TextStyle(color: Colors.white)),
child: Text(title),
);
}
}
更多关于Flutter社交媒体登录插件firebase_social_login的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter社交媒体登录插件firebase_social_login的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在 Flutter 中使用 firebase_social_login 插件可以实现通过社交媒体(如 Google、Facebook、Twitter 等)进行用户登录的功能。以下是使用 firebase_social_login 插件的基本步骤:
1. 添加依赖
首先,在 pubspec.yaml 文件中添加 firebase_social_login 插件的依赖:
dependencies:
flutter:
sdk: flutter
firebase_core: latest_version
firebase_auth: latest_version
firebase_social_login: latest_version
然后运行 flutter pub get 来安装依赖。
2. 初始化 Firebase
在你的 Flutter 项目中,初始化 Firebase。通常是在 main.dart 文件中进行初始化:
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Firebase Social Login',
home: SocialLoginScreen(),
);
}
}
3. 配置社交媒体登录
在使用 firebase_social_login 插件之前,你需要在 Firebase 控制台和各个社交媒体平台上进行配置。
- Google: 在 Firebase 控制台中启用 Google 登录,并配置 OAuth 客户端 ID。
- Facebook: 在 Firebase 控制台中启用 Facebook 登录,并在 Facebook 开发者控制台中创建应用并配置
appId和appSecret。 - Twitter: 在 Firebase 控制台中启用 Twitter 登录,并在 Twitter 开发者控制台中创建应用并配置
apiKey和apiSecretKey。
4. 使用 firebase_social_login 插件
在你的 Flutter 应用中使用 firebase_social_login 插件来实现社交媒体登录。
import 'package:flutter/material.dart';
import 'package:firebase_social_login/firebase_social_login.dart';
import 'package:firebase_auth/firebase_auth.dart';
class SocialLoginScreen extends StatefulWidget {
@override
_SocialLoginScreenState createState() => _SocialLoginScreenState();
}
class _SocialLoginScreenState extends State<SocialLoginScreen> {
final FirebaseSocialLogin _socialLogin = FirebaseSocialLogin();
FirebaseAuth _auth = FirebaseAuth.instance;
Future<void> _signInWithGoogle() async {
try {
final user = await _socialLogin.signInWithGoogle();
if (user != null) {
// 用户登录成功
print('Google User: ${user.displayName}');
}
} catch (e) {
print('Google Sign In Error: $e');
}
}
Future<void> _signInWithFacebook() async {
try {
final user = await _socialLogin.signInWithFacebook();
if (user != null) {
// 用户登录成功
print('Facebook User: ${user.displayName}');
}
} catch (e) {
print('Facebook Sign In Error: $e');
}
}
Future<void> _signInWithTwitter() async {
try {
final user = await _socialLogin.signInWithTwitter();
if (user != null) {
// 用户登录成功
print('Twitter User: ${user.displayName}');
}
} catch (e) {
print('Twitter Sign In Error: $e');
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Social Login'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
ElevatedButton(
onPressed: _signInWithGoogle,
child: Text('Sign in with Google'),
),
ElevatedButton(
onPressed: _signInWithFacebook,
child: Text('Sign in with Facebook'),
),
ElevatedButton(
onPressed: _signInWithTwitter,
child: Text('Sign in with Twitter'),
),
],
),
),
);
}
}
5. 处理用户登录状态
使用 FirebaseAuth 来处理用户的登录状态。你可以监听 authStateChanges 来获取当前用户的登录状态:
@override
void initState() {
super.initState();
_auth.authStateChanges().listen((User? user) {
if (user != null) {
// 用户已登录
print('User is signed in: ${user.uid}');
} else {
// 用户未登录
print('User is signed out');
}
});
}
6. 处理用户注销
你可以通过调用 signOut 方法来注销用户:
Future<void> _signOut() async {
await _auth.signOut();
print('User signed out');
}

