这是一个非常通用的问题,但任何建议都表示赞赏。
我正在编写一个使用Firebase身份验证的Ionic2应用。
用户可以注册该应用。验证电子邮件将发送到用户的电子邮件地址。如果用户验证了他们的电子邮件,他们就可以访问该应用。
但是,如果用户未验证其电子邮件,例如,如果他们使用错误的电子邮件地址登录,则电子邮件将永远不会被验证。在这种情况下,错误注册的电子邮件地址会冗余地位于Firebase数据库中,或者如果有效用户尝试使用该电子邮件注册,则会收到一条消息,指出该电子邮件地址属于原始提供商(Facebook,Google或普通电子邮件) ,并且无法注册为其他提供商。
如您所见,上述情况可能会阻止用户注册其电子邮件地址。
我尝试在用户登录时删除Firebase帐户,以便重新开始,因为我有匹配的uid
。但是,我不认为AngularFire2 api允许uid
删除Firebase帐户。请参阅here。
可以建议:
uid
或谢谢你
更新
感谢您提供以下建议。我有一个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。
答案 0 :(得分:1)
有三种方法可以删除Firebase身份验证帐户:
delete()
on the signed in user from the app。deleteUser()
from the Admin SDK。听起来您正在寻找选项3.这要求您运行一个可信进程来删除无关的用户。 不要尝试在您的实际应用中运行此代码,因为这样会打开一个安全措施,允许所有应用的用户删除彼此的帐户。