Firebase权限问题:google-service.json作用与认证方式咨询
问题解答
google-service.json的作用
google-service.json根本不是用来做用户认证的,它就是Firebase项目的配置清单,里面存着你的项目ID、API密钥、Storage存储桶地址、Realtime Database URL这类信息。它的作用是让你的Android App知道该连接到哪一个Firebase项目,相当于给App指个路,和用户身份没有任何关系。
推荐的用户认证方式
要让你的Storage规则allow read, write: if request.auth != null;生效,必须先让用户完成认证,Firebase提供了几种常用的认证方式:
- 匿名认证:适合临时用户或者快速测试,不用用户输入任何信息,直接生成一个匿名身份。代码示例:
FirebaseAuth.getInstance().signInAnonymously() .addOnCompleteListener { task -> if (task.isSuccessful) { // 匿名登录成功,现在可以访问受保护的资源了 } } - 邮箱密码认证:让用户用邮箱和密码注册/登录,需要先在Firebase控制台开启"邮箱/密码"认证方式。核心操作就是调用
createUserWithEmailAndPassword(注册)和signInWithEmailAndPassword(登录)方法。 - Google账号认证:集成Google登录SDK,用户用自己的Google账号一键登录,不用额外记密码,体验顺畅。
- 第三方平台认证:Firebase支持Facebook、Twitter、GitHub等平台的登录集成,用户用已有账号就能完成登录。
简单来说,不管用哪种方式,只要完成用户登录,Firebase就会给当前App实例附上认证信息,这时候你的Storage规则里的request.auth就不会为空,就能正常访问资源了。你之前报错就是因为没做任何用户认证,request.auth为null,触发了规则的权限拦截。
内容的提问来源于stack exchange,提问作者MgGuy
相关产品推荐
相关产品推荐

