swift Firebase匿名ID的恒定性如何

flvtvl50  于 2023-04-10  发布在  Swift
关注(0)|答案(7)|浏览(91)

我正在使用Firebase实时数据库构建一个应用程序。该应用程序最初主要是离线的,但我们计划稍后进行在线更新。我计划使用匿名登录,为用户获取ID并将其所有数据存储在此ID下:

Auth.auth().signInAnonymously(completion: { (user, error) -> Void })

登录后,我得到一个ID,看起来像这样:pCfgFOvEYEYvfWHaaaaavKgs8h33
是否保证此ID在给定设备上始终保持不变?我找不到有关此的任何文档。

eqfvzcg8

eqfvzcg81#

用户的UID永远不会更改。因此,在您匿名登录用户后,UID将保持不变(即使您再次调用signInAnonymously),直到您调用signout,或者直到用户卸载应用。

edqdpe6u

edqdpe6u2#

以下是我使用Flutter发现的:

  • 如果您调用FirebaseAuth.signInAnonymously()两次,中间没有调用FirebaseAuth.signOut(),您将获得与第一次调用相同的uid(来自AuthResult.user.uid)。
  • 如果调用FirebaseAuth.signOut(),然后调用FirebaseAuth.signInAnonymously(),则会得到一个新uid
  • 如果卸载应用程序并调用FirebaseAuth.signInAnonymously(),则会获得与以前安装不同的uid

如果你在signOut()之后或者卸载应用程序之后调用signInAnonymously(),你会得到一个新的uid。

w1jd8yoj

w1jd8yoj3#

check this out
Firebase还允许匿名身份验证会话,通常用于在等待客户端使用永久身份验证方法进行身份验证时持久化少量数据。**这些匿名会话可以配置为持续数天,数周,数月,甚至几年...直到用户使用永久登录方法登录或清除浏览器缓存。**Web应用程序通常使用本地数据存储,如sessionStorage或localStorage来完成类似的任务。
不能保证ID在给定设备上始终保持不变。Firebase将匿名身份验证会话存储到浏览器的localStorage。如果用户在隐身模式/隐私浏览模式下打开您的应用程序,其他浏览器,或者他们清除了浏览器的localStorage,Firebase将发出另一个用户ID。

kx5bkwkv

kx5bkwkv4#

如果您匿名登录,则您的UID将保持不变,直到您注销。一旦您注销,并再次登录,您将获得新的UID。或者即使用户卸载应用程序,您也会再次获得UID。

62lalag4

62lalag45#

这个答案仍然有效吗?我已经开始在Android手机上每次都获得新的UID。
这可能与android设备ID有关。例如,我正在使用flutter的device_ino_plus包,昨天我不得不做一个与androiceId开始变为null相关的修复。

if (Platform.isAndroid) {
    // this returns null for now.
    // See https://github.com/fluttercommunity/plus_plugins/issues/939
    //
    // final AndroidDeviceInfo androidInfo = await deviceInfoPlugin.androidInfo;
    // return androidInfo.androidId!;

    // UUID workaround
    ...
syqv5f0l

syqv5f0l6#

Firebase UID将在注销、从设置中清除应用程序数据以及卸载后重新安装应用程序时更改。

gzjq41n4

gzjq41n47#

我有一个问题,每当我关闭并重新打开应用程序时,用户ID都会发生变化。删除应用程序并重新安装它解决了这个问题。

相关问题