Flutter Firebase管理插件firebase_admin_sdk的使用
Flutter Firebase管理插件firebase_admin_sdk的使用
firebase_admin_sdk
是一个纯 Dart 实现的 Firebase 管理 SDK。目前,它仅支持以下 Firebase 服务的管理员方法:
- 身份验证(Authentication)
- 实时数据库(Realtime Database)
完整示例Demo
下面是一个完整的示例代码,展示了如何使用 firebase_admin_sdk
来管理 Firebase 的身份验证和实时数据库。
import 'package:firebase_admin/firebase_admin.dart';
void main() async {
// 初始化 Firebase Admin SDK
var serviceAccount = ServiceAccount.fromMap({
"type": "service_account",
"project_id": "your-project-id",
"private_key_id": "your-private-key-id",
"private_key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n",
"client_email": "firebase-adminsdk-xxx@your-project-id.iam.gserviceaccount.com",
"client_id": "1170xxxxx9805",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/firebase-adminsdk-xxx%40your-project-id.iam.gserviceaccount.com"
});
// 创建一个新的应用实例
var app = FirebaseApp(
name: 'default',
credential: EmailAuthProvider.credential(
email: 'your-email@example.com',
password: 'your-password',
),
);
// 获取身份验证实例
var auth = FirebaseAuth.instanceFor(app: app);
// 创建一个新用户
await auth.createUser(
email: 'test@example.com',
password: 'password123',
);
// 登录用户
var userCredential = await auth.signInWithEmailAndPassword(
email: 'test@example.com',
password: 'password123',
);
print('User signed in: ${userCredential.user?.email}');
// 获取实时数据库实例
var db = FirebaseDatabase.instanceFor(app: app);
// 在数据库中创建一个新节点
var ref = db.reference().child('users/test');
await ref.set({'name': 'John Doe', 'age': 30});
// 读取数据
var snapshot = await ref.once();
print('Data: ${snapshot.value}');
// 关闭应用
await app.delete();
}
代码说明
-
初始化 Firebase Admin SDK:
var serviceAccount = ServiceAccount.fromMap({ // 从你的服务账号 JSON 文件中获取这些值 });
-
创建一个新的应用实例:
var app = FirebaseApp( name: 'default', credential: EmailAuthProvider.credential( email: 'your-email@example.com', password: 'your-password', ), );
-
获取身份验证实例并创建用户:
var auth = FirebaseAuth.instanceFor(app: app); await auth.createUser( email: 'test@example.com', password: 'password123', );
-
登录用户并打印登录信息:
var userCredential = await auth.signInWithEmailAndPassword( email: 'test@example.com', password: 'password123', ); print('User signed in: ${userCredential.user?.email}');
-
获取实时数据库实例并在数据库中创建一个新节点:
var db = FirebaseDatabase.instanceFor(app: app); var ref = db.reference().child('users/test'); await ref.set({'name': 'John Doe', 'age': 30});
-
读取数据并打印:
var snapshot = await ref.once(); print('Data: ${snapshot.value}');
-
关闭应用:
await app.delete();
更多关于Flutter Firebase管理插件firebase_admin_sdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter Firebase管理插件firebase_admin_sdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中,firebase_admin_sdk
并不是一个官方或广泛认可的插件名称。通常,Flutter 项目中管理 Firebase 的插件是由 Firebase 官方提供的一系列插件,例如 firebase_core
、firebase_auth
、cloud_firestore
等。这些插件允许你在 Flutter 应用中集成 Firebase 的各种服务。
如果你是指在后端(如 Node.js 服务器)使用 Firebase Admin SDK 来管理 Firebase 项目,那么这通常是在服务器端环境中完成的,而不是直接在 Flutter 应用中。Flutter 应用通常会通过 Firebase 客户端 SDK 与 Firebase 服务进行交互。
不过,为了说明如何在服务器端(例如使用 Node.js)使用 Firebase Admin SDK,我可以提供一个简单的代码示例。这个示例将展示如何初始化 Firebase Admin SDK 并验证一个用户的身份令牌(通常是从 Flutter 应用中获取的 Firebase Authentication ID Token)。
Node.js 服务器端代码示例
-
安装 Firebase Admin SDK
首先,你需要在你的 Node.js 项目中安装 Firebase Admin SDK。你可以使用 npm 或 yarn 来完成这个操作。
npm install firebase-admin
-
初始化 Firebase Admin SDK
接下来,你需要初始化 Firebase Admin SDK。这通常涉及到从 Firebase 控制台下载一个服务帐户密钥文件(JSON 格式),并在你的代码中指定其路径。
const admin = require('firebase-admin'); const serviceAccount = require('path/to/serviceAccountKey.json'); admin.initializeApp({ credential: admin.credential.cert(serviceAccount), databaseURL: "https://<your-database-name>.firebaseio.com" });
-
验证 Firebase Authentication ID Token
现在,你可以使用 Firebase Admin SDK 来验证从 Flutter 应用中获取的 Firebase Authentication ID Token。
const express = require('express'); const bodyParser = require('body-parser'); const app = express(); app.use(bodyParser.json()); app.post('/verify-token', async (req, res) => { const idToken = req.body.idToken; try { const decodedToken = await admin.auth().verifyIdToken(idToken); const uid = decodedToken.uid; // 你可以在这里添加额外的逻辑,比如根据用户 ID 从数据库中获取用户信息 res.status(200).json({ success: true, uid: uid }); } catch (error) { console.error('Error verifying Firebase ID token:', error); res.status(403).json({ success: false, message: 'Invalid ID token.' }); } }); const PORT = process.env.PORT || 5000; app.listen(PORT, () => { console.log(`Server is running on port ${PORT}`); });
在这个示例中,我们创建了一个简单的 Express 服务器,它监听一个
/verify-token
端点。当这个端点接收到一个包含idToken
的 POST 请求时,它会尝试验证该令牌,并返回用户的 UID(如果验证成功)或错误消息(如果验证失败)。
Flutter 客户端代码示例
虽然这个回答的重点是 Firebase Admin SDK 的使用,但这里简要说明一下如何从 Flutter 应用中获取 Firebase Authentication ID Token。
import 'package:firebase_auth/firebase_auth.dart';
Future<String?> getIdToken() async {
final FirebaseAuth auth = FirebaseAuth.instance;
final User? user = auth.currentUser;
if (user != null) {
final IdTokenResult result = await user.getIdToken(true);
return result.token;
} else {
return null;
}
}
你可以调用 getIdToken
函数来获取当前用户的 ID Token,并将其发送到你的服务器进行验证。
希望这个回答能帮助你理解如何在服务器端使用 Firebase Admin SDK,并与 Flutter 应用进行交互。如果你有任何其他问题,请随时提问!