Flatter Firebase身份验证:还原回特定匿名用户

Flatter Firebase身份验证:还原回特定匿名用户,firebase,flutter,firebase-authentication,Firebase,Flutter,Firebase Authentication,缔约国指出: 如果凭据已链接到其他用户帐户,则调用linkWithCredential将失败。在这种情况下,您必须处理合并适用于您的应用程序的帐户和关联数据: 然后提供了一个代码示例,其颤振等效值可编写如下: final prevUser = FirebaseAuth.instance.currentUser; try { final result = await FirebaseAuth.instance.signInWithCredential(credential); final

缔约国指出:

如果凭据已链接到其他用户帐户,则调用linkWithCredential将失败。在这种情况下,您必须处理合并适用于您的应用程序的帐户和关联数据:

然后提供了一个代码示例,其颤振等效值可编写如下:

final prevUser = FirebaseAuth.instance.currentUser;
try {
  final result = await FirebaseAuth.instance.signInWithCredential(credential);
  final currentUser = result.user;
  // Merge prevUser and currentUser accounts and data
  // ...  
} catch (e) {
    // ...
}
让我们假设
prevUser
是一个匿名用户。如果
prevUser
currentUser
帐户和数据的合并未成功,是否有任何方法将Firebase登录状态恢复到调用
signInWithCredential
之前的状态,即使
prevUser
再次成为当前登录的Firebase用户


我的应用程序后端有自己的用户表示形式-
AppUser
,该用户由Firebase用户uid键入,并且有一个
AppUser
用户对应于(即具有与
prevUser
相同的uid)。我不想通过匿名登录从失败的合并中恢复,因为这会给我一个新的匿名用户,具有不同的uid,它与所说的
AppUser
用户不匹配。

否。一旦匿名用户注销,或被新登录取代,该匿名帐户实际上将永远丢失,从客户端应用程序的角度来看。客户端应用程序是唯一可以在该帐户上执行登录的凭据持有者

您可能想考虑至少保留该帐户的UID,然后将其提供给执行合并的任何进程。这通常是在后端完成的,这样当用户不直接从客户端应用程序控制帐户时,它就可以绕过任何安全限制