這是一個非常普遍的問題,但任何建議表示讚賞。登錄設計邏輯
我正在編寫使用Firebase身份驗證的Ionic2應用程序。
用戶可以註冊到應用程序。驗證電子郵件將發送到用戶的電子郵件地址。如果用戶驗證他們的電子郵件,他們可以訪問該應用程序。
但是,如果用戶沒有驗證他們的電子郵件,例如他們用不正確的電子郵件地址登錄,那麼電子郵件將不會被驗證。在這種情況下,錯誤註冊的電子郵件地址會冗餘地位於Firebase數據庫中,或者如果有效用戶嘗試使用該電子郵件進行註冊,則會收到該電子郵件地址屬於原始提供商(Facebook,Google或普通電子郵件)的消息, ,並且不能註冊爲不同的提供商。
如您所見,上述情況可能會阻止用戶註冊其電子郵件地址。
我試圖刪除Firebase帳戶,當用戶登錄時,所以他們重新開始,因爲我確實有匹配uid
。但是,我不認爲AngularFire2 API允許在uid
之前刪除Firebase帳戶。見here。
或者可以建議:
- 如何通過
uid
刪除賬戶,或 - 另一種設計,我可以用它來解決這個問題。
感謝您
UPDATE
感謝您對下面的建議。我有一臺Java服務器,我希望對用戶的Firebase管理員進行管理。
關於如何初始化Firebase管理員,我發現了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
刪除用戶?
UPDATE
看起來你需要創建與uid
自定義標記。見here。
如何在Java中執行以下操作?
admin.auth().deleteUser(uid)
.then(function() {
console.log("Successfully deleted user");
})
.catch(function(error) {
console.log("Error deleting user:", error);
});
UPDATE
我不認爲這是可能在Java中管理帳戶。我認爲自定義令牌需要傳回客戶端,然後用於登錄該用戶。見here。
謝謝。是的,選項3看起來像我需要的。我會試試看。 – Richard
嗨,弗蘭克,我正在考慮你的建議,而不是從應用程序本身運行管理任務。所以我打算讓一個Java Server來完成這項工作。唯一的問題是,我找不到有關如何在Java中執行此操作的任何文檔或示例(在Node.js中有很多示例)。請參閱我上面的更新。如果您能提供任何建議,我將不勝感激。 – Richard
這意味着該功能目前僅在node.js中可用。我們希望在某些時候將它添加到Java Admin SDK中,但是沒有時間表。 –