我在 google play 上有一个 android 应用程序,每天有大约 5k 用户。
我遇到了一个与 firebase auth 相关的奇怪错误,这并不常见,因此请在下结论之前仔细阅读:
我使用 Android_ID 作为我的应用用户的用户标识符Settings.Secure.getString(getContentResolver(), Settings.Secure.ANDROID_ID)
我知道这不是最好的主意,但它符合我的要求,因为它是独一无二的,每个手机都有一个,而且不可能改变(我想)。所以我用它在firebase中对我的用户进行身份验证,这样我就可以编写firebase规则来阻止用户根据他们查看其他用户的数据ANDROID_ID
但是有些用户在尝试读取自己的数据时被拒绝访问...
这看起来非常奇怪,第一个想法是我的代码中有一个错误,但是在调试了很多之后我找不到任何错误,所以我开始记录请求
我的日志显示了这样的内容
D/CrashlyticsCore check firebase access denied: device_id: e4c511c3-8ed7-3430-b3b0-e16d56acd2ad auth: da190696-e4bc-32f9-b229-eb24631a39fc
此消息表示用户已通过身份验证:da190696...
但知道其 id 值为:e4c511c3...
我还注意到拒绝访问通常发生在应用程序最小化之后
所以问题是:对此有什么解释吗?是否可以在无根设备上更改 device_id?是否有可能以某种方式被android随机化?