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) 中排除文档