【问题标题】:failed: DatabaseError: Permission denied Firebase the user is being created but database is not updating失败:DatabaseError:Permission denied Firebase 正在创建用户,但数据库未更新
【发布时间】:2020-06-08 03:20:28
【问题描述】:

这是帐户创建活动:这里正在创建用户,但除非我将规则更改为读写规则,否则数据库不会更新。

我只想要授权的用户数据库。 请帮忙

class CreateAccountActivity : AppCompatActivity() {

    var mAuth: FirebaseAuth? = null
    var mDatabase: DatabaseReference? = null
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_create_account)

        mAuth = FirebaseAuth.getInstance();

        idbuttonsignup.setOnClickListener{
            var email = idemail.text.toString().trim()
            var password = idpassword.text.toString().trim()
            var displayName = iddisplayname.text.toString().trim()

            if(!TextUtils.isEmpty(email) || !TextUtils.isEmpty(password) || !TextUtils.isEmpty(displayName)){
                createAccount(email,password,displayName)
            }else{
                Toast.makeText(this,"Please fill out all the fields", Toast.LENGTH_LONG).show()
            }
        }


    }



    private fun createAccount(email: String, password: String, displayName: String){
        mAuth!!.createUserWithEmailAndPassword(email,password)
            .addOnCompleteListener{
                    task: Task<AuthResult> ->

                if(task.isSuccessful){
                    var currentUserID = mAuth!!.currentUser
                    var userID = currentUserID!!.uid
                    Toast.makeText(this,"Task is sucessfull", Toast.LENGTH_LONG).show()
                    mDatabase = FirebaseDatabase.getInstance().reference.child("Users").child(userID)
                    var userObject = HashMap<String, String>()
                    userObject.put("display_name",displayName)
                    userObject.put("status", "Hello there...")
                    userObject.put("image", "default")
                    userObject.put("thumb_image","default")

                    mDatabase!!.setValue(userObject).addOnCompleteListener{
                            task: Task<Void> ->
                        if(task.isSuccessful){
                            var dashboardIntentOkc = Intent(this, DashboardActivity::class.java)
                            dashboardIntentOkc.putExtra( "name", displayName)
                            startActivity(dashboardIntentOkc)
                            finish()
                            Toast.makeText(this,"User Created", Toast.LENGTH_LONG).show()
                        }else{
                            Toast.makeText(this,"User Not Created", Toast.LENGTH_LONG).show()
                        }
                    }


                }
            }
    }

}

_______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 请帮忙

【问题讨论】:

    标签: android firebase firebase-realtime-database


    【解决方案1】:

    您是否在 Firebase 数据库中定义了读写操作的规则。如果没有,请查看 Firebase 官方页面。

    Get Started with Database Rules

    【讨论】:

    • { "rules": { "users": { "$uid": { ".read": "$uid === auth.uid", ".write": "$uid === auth.uid" } } } }
    • 是这样吗?只是一个疑问,我是新手。如果我这样做,具有授权的用户将无法访问读取和写入完整数据库并修改其他用户?
    • 是的。他们确实获得了访问权限。
    • 啊这样不好对吧?一个用户不应有权修改其他用户数据
    • 但是您可以像在此页面中那样进行用户群身份验证。 firebase.google.com/docs/database/security/user-security
    猜你喜欢
    • 2017-05-27
    • 1970-01-01
    • 2021-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-29
    • 2019-11-09
    • 1970-01-01
    相关资源
    最近更新 更多