[英]Android : Save key before app is uninstalled and get back key when app is installed again
[英]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。
做為測試:
具有FirebaseAuth.getInstance().signOut();
很重要FirebaseAuth.getInstance().signOut();
注銷時。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.