Flutter & Firebase - 如何只允许每台设备有 1 个帐户
Posted
技术标签:
【中文标题】Flutter & Firebase - 如何只允许每台设备有 1 个帐户【英文标题】:Flutter & Firebase- How to allow only 1 account per device 【发布时间】:2021-08-22 23:34:35 【问题描述】:我试图只允许用户在设备上创建 1 个帐户,因此当他创建帐户并注销,然后尝试创建新帐户时,它不会创建帐户并说此设备已经有一个帐户.到目前为止,我得到了设备 ID,但我不知道现在该做什么。
【问题讨论】:
解决方案是获取设备的唯一 ID 并使用用户详细信息对其进行修补。因此,当任何人或该特定用户尝试从该特定设备创建帐户时,您将使用device_info_plus
包检查后端是否存在该唯一 ID,检查此处***.com/questions/45031499/…
我如何检查它是否存在
【参考方案1】:
我要做的是使用唯一的设备 id 并在 firestore 中在用户集合中创建一个文档,其文档 id 是设备 id,然后验证该 id 是否已经存在,它将使用以下代码
FirebaseFirestore.instance
.collection('users')
.doc(idDevice)
.get()
.then((DocumentSnapshot documentSnapshot)
if (documentSnapshot.exists)
print('Document data: $documentSnapshot.data()');
else
print('Document does not exist on the database');
);
【讨论】:
【参考方案2】:在您的数据库中创建一个表,其中组合列:userid(来自新帐户)和 deviceid 是唯一的。 使用 device_info 包获取唯一的设备 ID
方法获取设备ID
Future<String> getDeviceId() async
var deviceInfo = DeviceInfoPlugin();
if (Platform.isios)
var iosInfo= await deviceInfo.iosInfo;
return iosInfo.identifierForVendor; // on iOS
else
var androidInfo = await deviceInfo.androidInfo;
return androidInfo.androidId; // on Android
【讨论】:
DeviceInfoPlugin
来自哪里?以上是关于Flutter & Firebase - 如何只允许每台设备有 1 个帐户的主要内容,如果未能解决你的问题,请参考以下文章
Flutter & Firebase:如何检查某个项目是不是存在于 Firebase 文档中的数组中
Flutter & firebase - StreamBuilder 未加载
Flutter 2 - firebase_remote_config 0.6.0 & firebase_core ^0.7.0 版本冲突
Flutter & Firebase - 从文档中获取特定字段
检查用户是不是登录 Flutter & firebase auth |
从 QuerySnapshot 和 Listview Builder (Flutter & Firebase) 中排除文档