Unity Firebase Auth删除APP仍存登录信息,如何禁用自动持久化?
Unity Firebase Auth 凭证持久化问题解决方案
一、删除应用重装后登录信息残留的处理
这种情况是系统自动备份(iOS iCloud/Android Google Drive)同步了存储在系统密钥库/钥匙串里的Auth凭证导致的,可通过配置应用排除Auth数据备份解决:
iOS 配置
在Info.plist中添加备份排除规则:
<key>NSBackupExclusionPaths</key> <array> <string>$(HOME)/Library/Application Support/firebase/auth</string> </array>
若需彻底禁用应用备份(非必要不推荐),可将排除路径设为*。
Android 配置
在AndroidManifest.xml的<application>标签中指定备份规则:
<application android:allowBackup="true" android:fullBackupContent="@xml/backup_rules"> </application>
然后在res/xml/backup_rules.xml中添加排除规则:
<?xml version="1.0" encoding="utf-8"?> <full-backup-content> <exclude domain="sharedpref" path="com.google.firebase.auth.api.gms.firebase_auth_preferences.xml"/> </full-backup-content>
配置完成后,删除应用再重装,系统就不会恢复Auth的持久化凭证。
二、禁用Auth凭证持久化(替代JS的setPersistence)
Unity Firebase Auth SDK没有和JS完全一致的setPersistence方法,但有两种可靠替代方案:
方案1:设置持久化模式为None(需新版SDK)
在任何登录操作之前调用SetPersistence,将持久化模式设为不保存:
var auth = FirebaseAuth.DefaultInstance; auth.SetPersistence(Persistence.None);
设置后重启应用,登录状态会直接丢失,用户需重新登录。
方案2:启动时强制登出(兼容旧版SDK)
若SDK版本不支持SetPersistence,可在应用启动时主动登出,清除本地凭证:
void Start() { var auth = FirebaseAuth.DefaultInstance; auth.SignOut(); }
该方法简单直接,重启后用户必须重新登录,但不会影响当前会话的登录状态。
内容的提问来源于stack exchange,提问作者Pita
相关产品推荐
相关产品推荐

