要使用signInWithCustomToken进行身份验证,并从特定集合中监听/观察文档更改,您可以按照以下步骤操作。
import * as admin from 'firebase-admin';
// 初始化Firebase Admin SDK
admin.initializeApp();
// 生成自定义令牌
const uid = 'user_id'; // 替换为您的用户ID
admin.auth().createCustomToken(uid)
.then((customToken) => {
// 在控制台中打印自定义令牌
console.log(customToken);
})
.catch((error) => {
console.log('Error creating custom token:', error);
});
FirebaseAuth mAuth = FirebaseAuth.getInstance();
String customToken = "generated_custom_token"; // 替换为生成的自定义令牌
mAuth.signInWithCustomToken(customToken)
.addOnCompleteListener(this, new OnCompleteListener() {
@Override
public void onComplete(@NonNull Task task) {
if (task.isSuccessful()) {
Log.d(TAG, "signInWithCustomToken:success");
FirebaseUser user = mAuth.getCurrentUser();
// 用户已成功登录,可以开始监听/观察文档更改
startListeningToDocuments();
} else {
Log.w(TAG, "signInWithCustomToken:failure", task.getException());
// 身份验证失败
}
}
});
FirebaseFirestore db = FirebaseFirestore.getInstance();
String collectionPath = "collection_name"; // 替换为您要监听的集合路径
db.collection(collectionPath)
.addSnapshotListener(new EventListener() {
@Override
public void onEvent(@Nullable QuerySnapshot snapshots, @Nullable FirebaseFirestoreException e) {
if (e != null) {
Log.w(TAG, "listen:error", e);
return;
}
for (DocumentChange dc : snapshots.getDocumentChanges()) {
switch (dc.getType()) {
case ADDED:
Log.d(TAG, "New document: " + dc.getDocument().getData());
// 新增文档
break;
case MODIFIED:
Log.d(TAG, "Modified document: " + dc.getDocument().getData());
// 修改文档
break;
case REMOVED:
Log.d(TAG, "Removed document: " + dc.getDocument().getData());
// 删除文档
break;
}
}
}
});
请确保在使用Firebase相关功能之前,已在Android项目中添加了Firebase身份验证和Firestore的依赖项。