2017-03-02 96 views
0

這是一個非常普遍的問題,但任何建議表示讚賞。登錄設計邏輯

我正在編寫使用Firebase身份驗證的Ionic2應用程序。

用戶可以註冊到應用程序。驗證電子郵件將發送到用戶的電子郵件地址。如果用戶驗證他們的電子郵件,他們可以訪問該應用程序。

但是,如果用戶沒有驗證他們的電子郵件,例如他們用不正確的電子郵件地址登錄,那麼電子郵件將不會被驗證。在這種情況下,錯誤註冊的電子郵件地址會冗餘地位於Firebase數據庫中,或者如果有效用戶嘗試使用該電子郵件進行註冊,則會收到該電子郵件地址屬於原始提供商(Facebook,Google或普通電子郵件)的消息, ,並且不能註冊爲不同的提供商。

如您所見,上述情況可能會阻止用戶註冊其電子郵件地址。

我試圖刪除Firebase帳戶,當用戶登錄時,所以他們重新開始,因爲我確實有匹配uid。但是,我不認爲AngularFire2 API允許在uid之前刪除Firebase帳戶。見here

或者可以建議:

  1. 如何通過uid刪除賬戶,或
  2. 另一種設計,我可以用它來解決這個問題。

感謝您

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

回答

1

有三種方法可以刪除火力地堡認證賬號:

    Firebase Authentication console
  1. 致電delete() on the signed in user from the app
  2. by calling deleteUser() from the Admin SDK

這聽起來像是你正在尋找選項3.這需要你運行一個可信的進程,刪除多餘的用戶。 不要嘗試在您的實際應用程序中運行此代碼,因爲這會打開一個安全性,允許所有應用程序的用戶刪除對方的帳戶。

+0

謝謝。是的,選項3看起來像我需要的。我會試試看。 – Richard

+0

嗨,弗蘭克,我正在考慮你的建議,而不是從應用程序本身運行管理任務。所以我打算讓一個Java Server來完成這項工作。唯一的問題是,我找不到有關如何在Java中執行此操作的任何文檔或示例(在Node.js中有很多示例)。請參閱我上面的更新。如果您能提供任何建議,我將不勝感激。 – Richard

+0

這意味着該功能目前僅在node.js中可用。我們希望在某些時候將它添加到Java Admin SDK中,但是沒有時間表。 –