Tag: firebase

Android版Firebase实时(在线)数据库的安全性如何?

我刚刚开始使用Google的firebase作为Android应用数据的在线集中式数据库(从使用本地sqlite迁移)。 作为firebase的新手,我想问一下android的firebase在线数据库有多安全? 从以下主题中读取,看起来任何可以访问google-services.json的人都可以插入和修改我的firebase数据库中的在线数据吗? 我应该将google-services.json(从Firebase)添加到我的存储库吗? google-services.json可以免受黑客攻击吗? 我担心任何能够访问反编译的apk配置文件(google-services.json)的人都可以在他们的android项目中使用它,比如说,创建一个类似包名的Android应用程序并推送恶意数据或从我的删除 firebase数据库。 如果有新的和聪明的解决办法使在线数据库更安全,你能提供建议吗? 到目前为止为了增加安全性,我试图: 将firebase的数据库规则编辑为: { “rules”: { “.read”: “auth != null”, “.write”: “auth != null” } } 将firebase电子邮件/密码validation添加到我的应用程序以控制登录。 但是,我发现即使没有身份validationfunction,新创建的应用程序仍然可以通过使用“hacked”google-services.json将数据推送和修改到在线firebase数据库中。 感谢您的意见和建议!

Firestore:允许拒绝权限的事务

我们从Java应用程序引擎实例访问Firestore 。 非事务性请求正在成功,但事务失败并显示错误: firestore: PERMISSION_DENIED: Missing or insufficient permissions 示例交易 final long updatedValue = 15; Firestore db = firebaseManager.getFirestore(); CollectionReference fooCollectionRef = db.collection(SOME_COLLECTION); DocumentReference fooDocumentRef = fooCollectionRef.document(fooId); final ApiFuture future = db.runTransaction(transaction -> { DocumentSnapshot snapshot = transaction.get(fooDocumentRef).get(); transaction.update(fooDocumentRef, SOME_FIELD, updatedValue); return updatedValue; }); return future.get(); 据我所知,我们对开发项目的权限是完全开放的: service cloud.firestore { match /databases/{database}/documents { match /{document=**} […]

Firebase:从存储和数据库中删除时,存储删除是否应该在存储删除的onSuccessListener中?

假设我想删除Firebase存储中的条目以及Firebase数据库中的元数据。 我应该这样彼此独立地删除它们: @Override public void onDeleteClick(int position) { Upload selectedItem = mUploads.get(position); String selectedKey = selectedItem.getKey(); StorageReference imageRef = FirebaseStorage.getInstance().getReferenceFromUrl(selectedItem.getImageUrl()); imageRef.delete(); mDatabaseRef.child(selectedKey).removeValue(); } 或者我应该将数据库删除部分放入存储删除方法的onSuccessListener中吗? @Override public void onDeleteClick(int position) { Upload selectedItem = mUploads.get(position); final String selectedKey = selectedItem.getKey(); StorageReference imageRef = FirebaseStorage.getInstance().getReferenceFromUrl(selectedItem.getImageUrl()); imageRef.delete().addOnSuccessListener(new OnSuccessListener() { @Override public void onSuccess(Void aVoid) { mDatabaseRef.child(selectedKey).removeValue(); } }); […]

非常简单的Firestore事务失败

我正在努力进行超级简单的交易。 它总是失败并显示“Transaction failed all retries”消息,但除了logcat之外没有任何错误消息。 当我调试它时,我发现它正在重试几次。 我真的不知道为什么,因为其他交易没有问题。 我只想将一个文档中的一个文档克隆到另一个集合中。 从“ videos ”到“ favorites ”(我知道这可以在@Alex指出的交易之外完成,但这只是失败的部分,真正的交易更长) private void copy( final DocumentReference SOURCEDOCREF, final CollectionReference TARGETCOLREF) { Transaction.Function transaction = new Transaction.Function() { @Nullable @Override public Void apply(@NonNull Transaction transaction) throws FirebaseFirestoreException { DocumentSnapshot doc = transaction.get(SOURCEDOCREF); if (doc.exists()) { DocumentReference favoriteRef = TARGETCOLREF.document(“FV_” + doc.getId()); Map data = […]

Firebase Firestore同步/无回调检索数据

我在我的Android应用程序中的一个单独的线程中使用Cloud Firestore,所以我不想使用侦听器OnSuccessListener和OnFailureListener在另一个线程中运行。 我可以让我的线程等待结果(并在需要时捕获任何exception)吗? 目前查询的代码是这样的: FirebaseFirestore.getInstance().collection(“someCollection”).get().addOnSuccessListener(new OnSuccessListener() { @Override public void onSuccess(QuerySnapshot documentSnapshots) { // do something on the UI thread with the retrieved data } }); 我想要的是: FirebaseFirestore.getInstance().collection(“someCollection”).getAndWaitForResult(); //Block the thread and wait for result, no callbacks. //getAndWaitForResult() is not a real function, just something to describe my intention. 我之前曾经使用过Parse Server,在那里它非常简单。

如何从Firebase获取所有Childs的Java对象的ArrayList

如何使用更新的firebase命令从Firebase获取所有Childs的Java对象的ArrayList,目前我正在使用以下方法但无法获取列表。 ValueEventListener postListener = new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { // Get Post object and use the values to update the UI if(dataSnapshot!=null){ for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) { UserDataClass post = postSnapshot.getValue(UserDataClass.class); members.add(post); } } } @Override public void onCancelled(DatabaseError databaseError) { // Getting Post failed, log a message } }; mDatabaseRef.addValueEventListener(postListener); […]

Firebase数据库未显示数据

我的firebase控制台没有显示任何数据但是当我将数据导出到json时有数据。 可能是什么问题?

Firebase – 没有在类上找到的序列化属性

我有一个这样的课: class dataModel { String id, name; Integer count; dataModel() {} } 我从Firebase添加数据。 mDatabase.addValueEventListener(mListener = new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { dataSet.add(dataSnapshot.getValue(dataModel.class)); //… } }); 当我将应用程序作为调试运行时,没有问题。 但在它发布后,应用程序崩溃并出现错误: com.google.firebase.database.DatabaseException: No properties to serialize found on class com.my.package.dataModel 我有minifyEnabled为 真

removeEventListener不删除firebase中的侦听器

我想在特定字段的值为true时从firebase ref中删除addValueEventListener侦听器。 ValueEventListener valueListener=null; private void removeListener(Firebase fb){ if(valueListener!=null){ **fb.removeEventListener(valueListener);** } } String key=”https://boiling-heat-3083.firebaseio.com/baseNodeAttempt/” + userId+”/”+nodeType+”/”+nodeId+”/data”; final Firebase fb = new Firebase(key); valueListener=fb.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot snap) { final HashMap data=(HashMap) snap.getValue(); if( data.get(“attemptFinish_”+nodeId)!=null){ boolean title = (boolean) snap.child(“attemptFinish_”+nodeId).getValue(); if(title){ removeListener(fb); } } } @Override public void onCancelled() { // TODO Auto-generated […]

如何在android中将多个图像上传到firebase?

我知道这个问题已经在这里被问到并回答了,但由于某些原因,如果解决方案对我不起作用。 所以这就是我试图这样做的方式。 我的布局中有两个按钮,一个用于打开图库,另一个用于上传图像。 定义的成员 int SELECT_PICTURES = 1; ArrayList mArrayUri = new ArrayList(); Uri imageUri; int up = 0; int k =0; 图库按钮代码 Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType(“image/*”); intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true); startActivityForResult(Intent.createChooser(intent, “Select Picture”), SELECT_PICTURES); 在活动结果代码上 @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(requestCode == SELECT_PICTURES) { if (resultCode […]