java - 登录设计逻辑

标签 java firebase firebase-authentication angularfire2

这是一个非常普遍的问题,但欢迎任何建议。

我正在编写一个使用 Firebase 身份验证的 Ionic2 应用。

用户可以注册该应用。验证电子邮件将发送到用户的电子邮件地址。如果用户验证了他们的电子邮件,他们就可以访问该应用。

但是,如果用户未验证其电子邮件,例如使用错误的电子邮件地址登录,则该电子邮件将永远不会得到验证。在这种情况下,错误注册的电子邮件地址会冗余地存储在 Firebase 数据库中,或者如果有效用户尝试使用该电子邮件进行注册,他们会收到一条消息,表明该电子邮件地址属于原始提供商(Facebook、Google 或普通电子邮件) ,并且无法注册为其他提供商。

如您所见,上述情况可能会阻止用户注册其电子邮件地址。

我尝试在用户登录时删除 Firebase 帐户,以便他们重新开始,因为我确实有匹配的 uid。但是,我认为 AngularFire2 api 不允许通过 uid 删除 Firebase 帐户。请参阅 here

可以建议:

  1. 如何通过uid删除帐户,或者
  2. 我可以使用另一种设计来解决此问题。

谢谢你

更新

感谢您在下面的建议。我有一个 Java 服务器,我想用它来对用户进行 Firebase 管理员管理。

我找到了有关如何初始化 Firebase Admin 的 Java documentation。例如

public void initialize() {
    String keyPath = "/appname-123456-firebase-adminsdk-eknji-3071d579f5.json";

    InputStream serviceAccount;
    ClassLoader loader = Thread.currentThread().getContextClassLoader();
    serviceAccount = loader.getResourceAsStream(keyPath);
    // serviceAccount = new FileInputStream(keyPath);
    FirebaseOptions options = new FirebaseOptions.Builder()
            .setCredential(FirebaseCredentials.fromCertificate(serviceAccount))
            .setDatabaseUrl("https://appname-123456.firebaseio.com").build();
    FirebaseApp app = FirebaseApp.initializeApp(options);
    FirebaseAuth auth = FirebaseAuth.getInstance();
    FirebaseDatabase database = FirebaseDatabase.getInstance();
}

我可以找到 Node.js documentation 了解如何管理用户。但是在 Java 中如何做到这一点呢?即如何通过 uid 删除用户?

更新

看起来您需要使用 uid 创建自定义 token 。请参阅 here

如何在 Java 中执行以下操作?

admin.auth().deleteUser(uid)
  .then(function() {
    console.log("Successfully deleted user");
  })
  .catch(function(error) {
    console.log("Error deleting user:", error);
  });

更新

我认为不可能用 Java 管理帐户。我认为自定义 token 需要传递回客户端,然后用于登录该用户。请参阅 here

最佳答案

可通过三种方式删除 Firebase 身份验证帐户:

  1. 来自 Firebase Authentication console .
  2. 调用 delete() on the signed in user from the app .
  3. 作者:calling deleteUser() from the Admin SDK .

听起来您正在寻找选项 3。这要求您运行一个可信进程来删除无关的用户。 不要尝试在实际应用中运行此代码,因为这会打开安全性,允许所有应用的用户删除彼此的帐户。

关于java - 登录设计逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42558343/

相关文章:

java - 在 ListView 中使用 Picasso

iOS 推送通知与杀死的应用程序 - swift

javascript - Firebase Cloud Functions 托管, 'once' 回调在云函数中有效,但在托管站点中无效

android - 使用 Firebase 在 Android 应用程序和 Web 应用程序之间进行单点登录

swift - 能够在 Firebase 中对用户进行身份验证,但无法将用户数据存储在 Firebase 数据库中

firebase - 如何使用 FireBase Auth UI 从 Android 应用程序使用 Google Drive?

java - 当fragment onCreateView时从Activity发送数据到Fragment

java - 在java中计算斐波那契数列

使用 FXML 的 JavaFX UI 控件架构(Control+Skin)

java - 陷入通过 Firebase 获取名称的困境