firebase - 如何检查客户的联系人是否正在使用我的应用程序?

标签 firebase google-cloud-firestore contacts addressbook

我目前正在使用 Firebase 开发应用。

我的 Firestore 数据库如下所示:

FireStore

一旦用户通过 Firebase 身份验证程序,我就会创建一个用户文档,其中包含一个包含他的电话号码的字段“Phone:”。基本上,所有将要使用该应用程序的人都会列在数据库中。

这是我的挑战:

我正在使用插件 easy_contact_picker将用户设备的所有联系人存储到列表中。

我如何知道用户联系人是否正在使用该应用程序或者他们是否在数据库中列出?

我的目标是创建一个显示我所有联系人的联系人列表小部件。但那些正在使用该应用程序或在数据库中列出的联系人应特别突出显示或标记。

如果我们考虑数据库中列出了数百万用户(以最小化计算能力),那么实现这一点的最佳方式是什么?

有人有想法吗?

非常感谢

最佳答案

首先,尽量避免让每个人都可以阅读所有用户。这是大多数人在处理此类问题时所做的事情。这样做是因为如果您不授予阅读所有用户的权限,则对所有用户的查询将无法工作。

出于安全原因,我会将检查用户是否存在的逻辑移动到可调用函数(不是 http 函数!)中。这样您就可以在您的应用程序内部调用它并检查数组中的单个用户或多个用户。这将取决于您的前端如何处理它。

以完全相同的格式存储所有电话号码非常重要。这样你就可以查询它们。无论有多少用户,您总能像这里一样找到特定的用户:

var citiesRef = db.collection("users");

var query = citiesRef.where("Phone", "==", "+4912345679");

数字必须完全相同,没有任何空空格 - 字符,+49 或 0049 也需要相同。

您可以创建两个可调用函数。一个检查您的应用程序中是否存在单个用户,另一个检查您发送一组电话号码并返回一个数组。云函数可以使用 Promise.all 并行执行此类查询,因此您可以非常快速地获得响应。

我正在使用类似的方法将我的应用程序中的用户添加为特定组的管理员,您只需在其中输入用户的电子邮件,如果他在应用程序中,他将被添加。我不是他在电子邮件中收到加入应用程序的邀请。

关于firebase - 如何检查客户的联系人是否正在使用我的应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67864622/

相关文章:

ios - iOS 上的 Nativescript 联系人权限

java - 我使用 javascript 创建了一个 html 文件来在 firebase 中存储图像,但是如果我运行 html 并单击选择文件,它会在控制台中显示错误

firebase - Firestore 安全规则。用户可以知道别人的 UID 吗?

android - 您能否在Firestore中的一个查询中将多个whereEqualTo操作链接在一起

ios - Apple Pay - 我们可以在 Objective C 中提取电子邮件和电话号码吗

c# - gmail联系人的邮政地址解析

swift - 时间戳作为 "timestamp"保存到 Firestore 中是否正常?

angularjs - AngularFire/Firebase - 从 $firebaseArray 获取单个元素以便在 DOM/$remove 中使用

android - Firebase 未向控制台报告崩溃

javascript - Firestore 无法读取\n jspdf 字符串