Tag: firebase

Firestore安全规则基于地图值

如果允许用户根据用户的电子邮件地址在文档中读取文档,我想要存储它。 多个用户应该可以访问同一个文档。 根据文档 Firestore不允许查询阵列成员。 这就是为什么我要将用户的电子邮件地址存储在一个String-Bool Map中,并将电子邮件地址作为关键字。 对于下面的例子,我不使用电子邮件作为映射键,因为它已经不适用于基本的字符串。 数据库结构如下所示: lists list_1 id: String name: String owner: E-Mail type: String shared: test: true 所有安全规则在这里列出: service cloud.firestore { match /databases/{database}/documents { match /lists/{listId=**} { allow read: if resource.data.shared.test == true } } } 编辑:如果我使用match /lists/{listId}而不是match /lists/{listId=**} 我的理解是,如果map shared[test]值为true,则此安全规则应允许读取所有人。 为了完整起见:这是我正在使用的查询(Android上的Kotlin): collection.whereEqualTo("shared.test", true).get() .addOnCompleteListener(activity, { task -> if (task.isSuccessful) { […]

Android使用firebase数据而不是字符串填充arrayOf

我是firebase的新手,所以有些东西对我来说还是有点困惑。 我有一个数组: var spinnerArray = arrayOf("Dumbell", "Punching Bag", "Yoga Ball", "Skipping Rope") ,然后我传递给一个微调。 所有的工作。 虽然,现在我想把它带到下一个层次,而不是用添加到数组中的字符串填充微调框,我希望它传递我的firebase数据库上的数据。 原因是,有些项目有子项目,所以我需要使用对象。 我真的不知道如何去取代这个。 你可以帮我吗 我已经将我的应用程序连接到实时数据库。 谢谢 { "KitList" : { "kettle" : { "10KG" : "10KG", "5KG" : "5KG" }, "punchBag" : "punch bag", "sandbag" : "sandbag" } } 有人告诉我,我不应该把这个价值等于这个关键? 这是我的模型 class KitList(val title: String) { override fun toString(): String { […]

无法将列表检索到Firebase数据库

我目前正在使用Firebase数据库进行项目工作,无法将数据作为列表进行检索。 这里是一个我已经导入到firebase的json的样本: { "mood" : [ { "date" : 1480625911154, "reasons" : "Lorem Ipsum", "status" : "Ok", "user" : "812c3772-5e3b-4776-8b4c-41ee3047011d" }, { "date" : 1480626081958, "reasons" : "Lorem Ipsum", "status" : "Ok", "user" : "3fca7432-ac0b-40f8-b898-929df4d3a2e8" }, { "date" : 1480626567674, "reasons" : "Lorem Ipsum", "status" : "Ok", "user" : "22e9254a-161b-4126-8cd2-7e5ebe03fa6f" } ] } 进入我的Android应用程序,我想用下面的查询和代码(这是在Kotlin)检索特定用户的数据: FirebaseDatabase.getInstance().getReference("mood").orderByChild("user").equalTo("fa224092-2dfa-49c4-9fb6-c63eccf61a8b").addListenerForSingleValueEvent(object […]

如何在Firebase中存储BigDecimal?

我试图在Firebase中存储BigDecimal: data class Money(val amount: BigDecimal = BigDecimal.ZERO, val currency: Currency = Currency.USD) 但是当把数据推送到数据库时,得到一个异常: com.google.firebase.database.DatabaseException: Failed to parse node with class class java.math.BigDecimal at com.google.android.gms.internal.zzbpf.zza(Unknown Source) at com.google.android.gms.internal.zzbpf.zzar(Unknown Source) at com.google.android.gms.internal.zzbpf.zza(Unknown Source) at com.google.android.gms.internal.zzbpf.zzar(Unknown Source) at com.google.android.gms.internal.zzbpf.zza(Unknown Source) at com.google.firebase.database.DatabaseReference.zza(Unknown Source) at com.google.firebase.database.DatabaseReference.setValue(Unknown Source) 我怎样才能存储它?

Firebase Admin SDK无法从jar文件内部连接到数据库

我正在开发一个带有Firebase的Android应用程序,并决定使用Firebase Admin SDK创建一个简单的管理应用程序。 使用IDE(IntelliJ IDEA)启动并通过Admin SDK连接到数据库可以正常工作,但启动导出的.jar文件时,Admin SDK无法连接到数据库。 要初始化到Firebase的连接,我使用以下(Kotlin)代码: //Initialize the Firebase Admin SDK. val serviceAccount = this.javaClass.classLoader.getResourceAsStream("fen/ftcConsole/control/flip-the-classroom-app-firebase-adminsdk.json") val options = FirebaseOptions.Builder() .setCredential(FirebaseCredentials.fromCertificate(serviceAccount)) .setDatabaseUrl("https://flip-the-classroom-app.firebaseio.com/") .setStorageBucket("flip-the-classroom-app.appspot.com") .build() FirebaseApp.initializeApp(options) //Get the connections to the database and the cloud storage. database = FirebaseDatabase.getInstance() storage = StorageClient.getInstance().bucket() 我添加了一些控制台输出,发现代码只是不会超过这一行:“database = FirebaseDatabase.getInstance()”。 它只是阻止线程,没有任何反应。 也没有例外抛出。 正如我所说,这只发生在导出的jar文件,当开始与IDE,一切工作正常,这使得测试非常困难。 使用IntelliJ和gradle创建.jar文件,打包.jar文件中的依赖关系,并将其保留在外部,从.jar文件或外部使用admin-key加载.json文件,问题总是发生。 为了用gradle创建.jar,build.gradle文件包含下面的jar-block: jar { manifest { attributes […]

加载图像从毕加索的Firebase存储到Infowindow的ImageView,毕加索只显示占位符

我尝试从带有Picasso的Firebase存储中将图像加载到ImageView中,该图像位于标记的InfoWindowAdapter中。 我非常绝望。 问题是毕加索只显示占位符图标。 我的FirebaseStorageRefernce代码看起来像是指这个Firebase博客帖子 : StorageReference load = getImage(id); load.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() { @Override public void onSuccess(Uri uri) { downloadUri = uri; } }).addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { Log.e("Failure",e.toString()); } }); 我得到的downloadUri是有效的,工作正常。 现在我使用这个下载UU为毕加索。 Picasso picasso = new Picasso.Builder(getApplicationContext()).listener(new Picasso.Listener() { @Override public void onImageLoadFailed(Picasso picasso, Uri uri, Exception e) { e.printStackTrace(); […]

Firestore数据库规则:查询的权限

我试图查询基于字段的文档。 由于这个领域,我有权限阅读这个文件: match /lists/{list=**} { allow read: if resource.data.name == 'MyDocument' } 如果我试图直接检索这个文档,它是成功的(使用Kotlin的Android客户端): val doc = db.document("lists/acaa0247-eccd-4ff0-b986-7f8b6187e45f") doc.get().addOnCompleteListener { task -> if (task.isSuccessful) { // here it works println("This Works") } else { println("Failed") } } 但是当我查询它(或只是试图获取集合中的所有文档),我得到一个权限被拒绝的异常: val collection = db.collection("lists") collection.get().addOnCompleteListener(activity, { task -> if (task.isSuccessful) { println("Should work") } else { // Here […]

RxJava:如何返回null的正确类型

我正在开发一个使用Firebase,Kotlin和RxJava的应用程序。 基本上,我需要做的是使用Firebase中的Auth注册用户,如果用户选择了一张照片,上传照片,然后将用户从Firebase中保存到数据库中。 到现在为止,我有这个 RxFirebaseAuth.createUserWithEmailAndPassword(auth, email, password) .map { authResult -> user.uid = authResult.user.uid authResult.user.uid } .flatMap<UploadTask.TaskSnapshot>( { uid -> if (imageUri != null) RxFirebaseStorage.putFile(mFirebaseStorage .getReference(STORAGE_IMAGE_REFERENCE) .child(uid), imageUri) else Maybe.empty<UploadTask.TaskSnapshot>() } ) .map { taskSnapshot -> user.photoUrl = taskSnapshot.downloadUrl!!.toString() } .map { RxFirebaseDatabase .setValue(mFirebaseDatabase.getReference("user") .child(user.uid), user).subscribe() } .doOnComplete { appLocalDataStore.saveUser(user) } .toObservable() 当用户选择一张照片时,它正常工作,但是当它没有被选中时,其他地图被忽略,因为我返回了Maybe.empty()。 我应该如何实现这个使用或不使用用户照片? 谢谢。

Android的Firebase身份验证同步登录

当我们想让代码在登录到addOnCompleteListener后运行,我们使用addOnCompleteListener这样: void signInToFirebaseUsing(GoogleSignInAccount googleAccount) { AuthCredential credential = GoogleAuthProvider.getCredential(googleAccount.getIdToken(), null) firebaseAuth.signInWithCredential(credential) .addOnCompleteListener { … if (task.isSuccessful()) { … } else { … } } } 然而,firebase不是我想登录的唯一服务。我需要一个同步的firebase登录,所以我可以处理多个身份验证(我使用Kotlin和AsyncAwait库 ,但你明白了): private fun signInToAppUsing(googleAccount: GoogleSignInAccount) { async { try { await { signInToRealmUsing(googleAccount) } await { signInToFirebaseUsing(googleAccount) } // <- this won't work because firebase uses asynchronous listener // […]

OneSignal:onNotificationProcessing在一段时间后不会被调用

我已经成功实施了OneSignal设备到设备推送通知,但几个小时后,它就停止了所有3个设备的工作。 在logcat中显示以下输出,而不是onNotificationProcessing调用: 11-29 15:51:35.348 16383-16383/? E/FirebaseInstanceId: Failed to resolve target intent service, skipping classname enforcement 11-29 15:51:35.348 3672-5620/? W/ActivityManager: Unable to start service Intent { act=com.google.firebase.MESSAGING_EVENT pkg=com.APP.ID (has extras) } U=0: not found 11-29 15:51:35.353 16383-16383/? E/FirebaseInstanceId: Error while delivering the message: ServiceIntent not found. 在应用程序类onCreate OneSignal.startInit(ctx).init() OneSignal.idsAvailable { osId, gcmId -> saveToFirebase(osId) } 在清单中 […]