如何使用 Firebase Admin SDK 注销用户?

How to logout the user using Firebase Admin SDK?

所以,我使用 Firebase Admin SDK 创建了一个云函数。该功能的目的是禁用用户并在成功禁用它后,我希望该用户从我的应用程序中注销。我已禁用用户,但不知道如何注销用户。

我想知道是否有任何变通方法可以实现此目的?

登录到您的应用程序的用户有一个 ID 令牌,有效期最长为一个小时。一旦创建了该令牌,就无法撤销它。

处理您的用例的典型方法是在禁用用户帐户后在服务器端数据库中标记用户,然后在任何操作中检查该标记。

例如,如果您使用 Firebase 实时数据库,并使用 Node.js 禁用用户,同时在数据库中标记用户的代码可能如下所示:

// Disable the user in Firebase Authentication to prevent them from signing in or refreshing their token
admin.auth().updateUser(uid, {
  disabled: true
}).then(function() {
  // Flag the user as disabled in the database, so that we can prevent their reads/writes
  firebase.database().ref("blacklist").child(uid).set(true);
});

然后您可以在服务器端安全规则中使用如下内容进行检查:

{
  "rules": {
    ".read": "auth.uid !== null && !root.child('blacklist').child(auth.uid).exists()"
  }
}

此规则允许所有已登录的用户 (auth.uid !== null) 对数据库进行完全读取访问,但阻止您标记的用户 (!root.child('blacklist').child(auth.uid).exists())。

有关此方法的(甚至)更详细的示例,请参阅 documentation on session management