Flutter Firebase Admin 功能互操作插件firebase_admin_interop的使用
Flutter Firebase Admin 功能互操作插件 firebase_admin_interop 的使用
安装
- 在项目的
pubspec.yaml文件中添加firebase_admin_interop作为依赖:
dependencies:
firebase_admin_interop: [latest_version]
运行以下命令以获取依赖项:
pub get
- 创建一个
package.json文件以安装此库所需的 Node.js 模块:
{
"dependencies": {
"firebase-admin": "8.5.0",
"@google-cloud/firestore": "2.0.0"
}
}
然后运行以下命令来安装这些模块:
npm install
使用
以下是一个简单的使用实时数据库客户端的示例:
import 'dart:async';
import 'package:firebase_admin_interop/firebase_admin_interop.dart';
Future<void> main() async {
// 提供服务账户密钥文件路径
final serviceAccountKeyFilename = '/absolute/path/to/service-account.json';
// 初始化 FirebaseAdmin 实例
final admin = FirebaseAdmin.instance;
// 加载服务账户密钥
final cert = admin.certFromPath(serviceAccountKeyFilename);
// 初始化 Firebase 应用程序
final app = admin.initializeApp(new AppOptions(
credential: cert,
databaseURL: "YOUR_DB_URL", // 替换为您的数据库 URL
));
// 获取数据库引用
final ref = app.database().ref('/test-path');
// 向数据库写入数据到 "/test-path" 路径
await ref.setValue("Hello world");
// 从同一数据库位置读取数据
var snapshot = await ref.once("value");
// 打印读取的数据
print(snapshot.val()); // 输出 "Hello world".
}
注意:在使用实时数据库时,只能使用与 JSON 兼容的值。这包括所有原始类型(如 int、double、bool)、字符串(String)以及任何 List 或 Map 实例。
对于 Firestore,还支持更多数据类型,例如 DateTime 和 GeoPoint。
构建
该库依赖于 node_interop 包,它提供了 Node.js 绑定,并且 build_node_compilers 包允许将 Dart 应用程序编译为 Node.js 模块。
为了启用由 build_node_compilers 提供的构建器,首先在 pubspec.yaml 中添加以下开发依赖项:
dev_dependencies:
build_runner: ^1.0.0
build_node_compilers: ^0.2.0
接下来,在项目根目录下创建一个 build.yaml 文件,内容如下:
targets:
$default:
sources:
- "lib/**"
- "node/**" # 假设主 Dart 文件位于 node/ 文件夹中(推荐)
- "test/**"
builders:
build_node_compilers|entrypoint:
options:
compiler: dart2js # 默认使用 dart2js 编译
现在可以使用 build_runner 来构建项目:
# 默认使用 DDC 编译
pub run build_runner build --output=build
# 使用 dart2js 编译
pub run build_runner build \
--define="build_node_compilers|entrypoint=compiler=dart2js" \
--define="build_node_compilers|entrypoint=dart2js_args=[\"--minify\"]" \ # 可选,对生成的代码进行压缩
--output=build/
状态
该库被认为是稳定的,尽管功能尚未完全完成。建议查看开发版本以获取最新的更新和错误修复。
确保在每次发布后检查 CHANGELOG.md,所有重要的更改和升级说明都会在其中描述。
当前实现的覆盖报告如下:
- ✅ admin
- ✅ admin.auth
- ✅ admin.app
- ✅ admin.credential
- ✅ admin.database
- ✅ admin.firestore
- ✅ admin.messaging
- ❌ admin.storage
特性和问题
有关功能请求和错误报告,请访问 GitHub issue 追踪器。
示例代码
以下是从官方仓库中提取的完整示例代码:
import 'package:firebase_admin_interop/firebase_admin_interop.dart';
main() async {
// 提供服务账户密钥文件路径
final serviceAccountKeyFilename = '/absolute/path/to/service-account.json';
// 初始化 FirebaseAdmin 实例
final admin = FirebaseAdmin.instance;
// 加载服务账户密钥
final cert = admin.certFromPath(serviceAccountKeyFilename);
// 初始化 Firebase 应用程序
final app = admin.initializeApp(new AppOptions(
credential: cert,
databaseURL: "YOUR_DB_URL", // 替换为您的数据库 URL
));
// 获取数据库引用
final ref = app.database().ref('/test-path');
// 向数据库写入数据到 "/test-path" 路径
await ref.setValue("Hello world");
// 从同一数据库位置读取数据
var snapshot = await ref.once("value");
// 打印读取的数据
print(snapshot.val()); // 输出 "Hello world".
}
更多关于Flutter Firebase Admin 功能互操作插件firebase_admin_interop的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter Firebase Admin 功能互操作插件firebase_admin_interop的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
firebase_admin_interop 是一个用于在 Flutter 应用中与 Firebase Admin SDK 进行互操作的插件。它允许你在 Flutter 应用中使用 Dart 代码执行 Firebase Admin SDK 的功能,例如管理用户、验证令牌、发送通知等。
1. 安装插件
首先,你需要在 pubspec.yaml 文件中添加 firebase_admin_interop 依赖:
dependencies:
flutter:
sdk: flutter
firebase_admin_interop: ^2.0.0
然后运行 flutter pub get 来安装依赖。
2. 初始化 Firebase Admin SDK
在使用 firebase_admin_interop 之前,你需要初始化 Firebase Admin SDK。通常,你需要提供一个服务账号的 JSON 文件来进行身份验证。
import 'package:firebase_admin_interop/firebase_admin_interop.dart';
void main() async {
// 初始化 Firebase Admin SDK
var admin = FirebaseAdmin.instance;
var app = admin.initializeApp(
AppOptions(
credential: admin.certFromPath('path/to/serviceAccountKey.json'),
),
);
// 现在你可以使用 Firebase Admin SDK 的功能
var auth = app.auth();
var firestore = app.firestore();
}
3. 使用 Firebase Auth
你可以使用 firebase_admin_interop 来管理用户,例如创建用户、删除用户、获取用户信息等。
void createUser() async {
var userRecord = await auth.createUser(
CreateUserRequest(
email: 'user@example.com',
password: 'password123',
),
);
print('Created user: ${userRecord.uid}');
}
4. 使用 Firestore
你可以使用 firebase_admin_interop 来操作 Firestore 数据库。
void addDataToFirestore() async {
var docRef = firestore.collection('users').doc('user1');
await docRef.set({
'name': 'John Doe',
'age': 30,
});
print('Data added to Firestore');
}
5. 验证 ID 令牌
你可以使用 firebase_admin_interop 来验证 Firebase ID 令牌。
void verifyIdToken(String idToken) async {
try {
var decodedToken = await auth.verifyIdToken(idToken);
print('Decoded token: $decodedToken');
} catch (e) {
print('Error verifying ID token: $e');
}
}
6. 发送通知
你可以使用 firebase_admin_interop 来发送 Firebase Cloud Messaging (FCM) 通知。
void sendNotification() async {
var message = Message(
notification: Notification(
title: 'Hello',
body: 'This is a test message',
),
token: 'device_token',
);
var response = await app.messaging().send(message);
print('Message sent: ${response.messageId}');
}
7. 错误处理
在使用 firebase_admin_interop 时,确保处理可能出现的错误,例如网络错误、权限不足等。
void handleErrors() async {
try {
var userRecord = await auth.getUser('user_uid');
print('User: ${userRecord.email}');
} catch (e) {
print('Error fetching user: $e');
}
}

