登录设计逻辑

时间:2017-03-02 14:40:50

标签: java firebase firebase-authentication angularfire2

这是一个非常通用的问题,但任何建议都表示赞赏。

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

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

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

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

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

可以建议:

  1. 如何按uid
  2. 删除帐户
  3. 我可以用另一种设计来解决这个问题。
  4. 谢谢你

    更新

    感谢您提供以下建议。我有一个Java服务器,我想对用户进行Firebase管理。

    我找到了关于如何初始化Firebase Admin的Java documentation。 e.g。

    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创建自定义令牌。请参阅here

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

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

    更新

    我认为用Java管理帐户是不可能的。我认为自定义令牌需要传递回客户端,然后用于登录该用户。见here

1 个答案:

答案 0 :(得分:1)

有三种方法可以删除Firebase身份验证帐户:

  1. 来自Firebase Authentication console
  2. 致电delete() on the signed in user from the app
  3. calling deleteUser() from the Admin SDK
  4. 听起来您正在寻找选项3.这要求您运行一个可信进程来删除无关的用户。 不要尝试在您的实际应用中运行此代码,因为这样会打开一个安全措施,允许所有应用的用户删除彼此的帐户。

相关问题