簡體   English   中英

卸載並重新安裝應用程序后,Firebase身份驗證返回特定用戶

[英]Firebase Authentication returning specific user when app is uninstalled and Installed again

我在使用Google登錄我的應用程序+ Firebase時遇到問題。

假設我有3個用戶X,Y and Z在同一時間登錄我的應用程序。

我用於檢查用戶的代碼是否已登錄:

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

if(currentUser!=null)
   {
     //user logged in and get user detail from currentUser and go to HomePage
   }
 else{
    //Show sign in button
   }

場景:我使用多個帳戶簽名並注銷。 一切正常。

但是,當我刪除該應用程序並再次安裝時。 Y用戶由mAuth.getCurrentUser()自動返回。

我嘗試使用X登錄並卸載應用程序。 不過,如果我再次安裝它,則直接將我帶給Y用戶。

我嘗試使用Z登錄並卸載應用程序。 不過,如果我再次安裝它,則直接將我帶給Y用戶。

我什至嘗試注銷並刪除該應用程序。 同樣,如果我安裝,它將返回Y用戶,甚至不要求登錄。

注意:我尚未清除緩存或數據。 如果我這樣做,一切正常。

問題只是釋放了應用程序。

一定是什么原因?

從文檔:

當用戶注冊或登錄時,該用戶將成為Auth實例的當前用戶。 Firebase Auth實例會保留用戶的狀態,因此刷新頁面(在瀏覽器中)或重新啟動應用程序不會丟失用戶的信息。

當用戶注銷時,Auth實例將停止保留對User對象的引用,並且不再保持其狀態。 目前沒有用戶。 但是,用戶實例仍然可以完全起作用:如果您保留對它的引用,則仍然可以訪問和更新用戶數據。

因此,要解決此問題,最好的方法是創建一個按鈕並注銷用戶。 這樣,當您重新啟動應用程序時,該用戶將不會登錄。

FirebaseAuth.getInstance().signOut();

此處提供更多信息: https : //firebase.google.com/docs/auth/users

這個問題也與ios有關(但想法相同): Firebase-刪除並重新安裝應用程序不會取消對用戶的身份驗證

其他替代方案還包括:

在清單的<application>中添加android:allowBackup="false"

android:allowBackup

是否允許應用程序參與備份和還原基礎結構。 如果將此屬性設置為false,則即使通過全系統備份也不會執行應用程序的備份或還原,否則將導致所有應用程序數據通過adb保存。 此屬性的默認值為true。

做為測試:

  1. 刪除緩存和數據
  2. 使用用戶Y登錄並注銷
  3. 使用用戶X登錄並注銷
  4. 卸載應用程序
  5. 使用用戶X安裝應用程序登錄名。

具有FirebaseAuth.getInstance().signOut();很重要FirebaseAuth.getInstance().signOut(); 注銷時。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM