2017-08-12 263 views
2

對不起,如果這是一個簡單的問題..但我似乎無法找到一個好的答案。使用Firebase進行身份驗證

我想實現一個匿名登錄,用戶只需登錄他們的設備。我猜測跨iOS和Android的設備沒有唯一的ID ..所以我想我必須手動生成一個ID,然後看看它是否已經在使用,然後是否重新生成。有這樣的解決方案嗎?我的解決方案似乎真的哈克......

我現在的想法,邏輯明智,那就是:

  • 生成唯一的ID
  • 查詢數據庫,看看是否唯一ID已在使用
  • 如果是重複前兩個步驟
  • 如果沒有推高

我需要能夠跟蹤推什麼設備什麼樣的信息給databa se,但我不想讓用戶必須登錄或提供任何信息。

回答

2

這聽起來像您正在尋找Firebase的匿名身份驗證。用戶啓動應用程序的第一次,你在再簽收:

FirebaseAuth.getInstance().signInAnonymously() 
    .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { 
     @Override 
     public void onComplete(@NonNull Task<AuthResult> task) { 
      if (task.isSuccessful()) { 
       // Sign in success, update UI with the signed-in user's information 
       Log.d(TAG, "signInAnonymously:success"); 
       FirebaseUser user = mAuth.getCurrentUser(); 
       updateUI(user); 
      } else { 
       // If sign in fails, display a message to the user. 
       Log.w(TAG, "signInAnonymously:failure", task.getException()); 
       Toast.makeText(AnonymousAuthActivity.this, "Authentication failed.", 
         Toast.LENGTH_SHORT).show(); 
       updateUI(null); 
      } 

      // ... 
     } 
    }); 

這對他們來說並存儲生成一個唯一的UID,在您的應用程序的共享偏好。

他們下一次啓動應用程序,其用戶信息被讀取,你可以檢測到用戶使用:

FirebaseUser currentUser = FirebaseAuth.getInstance().getCurrentUser(); 
updateUI(currentUser); 

見獲取更多信息Firebase Authentication documentation。這也可在iOS

相關問題