Firebase 实时数据库中的权限被拒绝

问题描述 投票:0回答:0

我正在尝试在我的 Kivy 应用程序中使用 pyrebase4,当我试图访问保存在实时数据库中的信息时,终端中的输出是:

[Errno 401 客户端错误:未授权 url:https://testdatabasept4-default-rtdb.firebaseio.com/users/QdYF1dur4wSpekS4YUETjrJBQfB3.json] {“错误”:“权限被拒绝”}

我的代码:

firebaseConfig = ...
firebase=pyrebase.initialize_app(firebaseConfig)
auth=firebase.auth()

class LoginScreen(Screen):    
    dialog = None
    content = ObjectProperty()    

def do_login(self, email, senha):
        try:
            log_in = auth.sign_in_with_email_and_password(email,senha)
            user_log= auth.get_account_info(log_in['idToken'])
            email_verified = user_log['users'][0]['emailVerified']
            if email_verified:
                uid = log_in['localId']
                print(uid) # output: QdYF1dur4wSpekS4YUETjrJBQfB3
                db = firebase.database()
                user_info = db.child("users").child(uid).get()
                user_data = user_info.val()
                global nome
                nome=user_data['nome']
                global idEmail
                idEmail = email
                self.manager.current = 'authprojeto'
            else:
                auth.send_email_verification(log_in['idToken'])
                error_verification = MDDialog(
                    title='Erro',
                    text='O email ainda não foi verificado.\nFaça a verificação antes de fazer login.',
                    elevation=0,
                    size_hint=(0.8, 0.3),
                    buttons=[MDFlatButton(text='OK', on_release=lambda x: error_verification.dismiss())])
                error_verification.open()
        except Exception as e:
            print (e)
            error_validation = MDDialog(
                title='Erro no Login',
                text='Email ou senha inválidos.\nTente Novamente.',
                elevation=0,
                size_hint=(0.8, 0.3),
                buttons=[MDFlatButton(text='OK', on_release=lambda x: error_validation.dismiss())])
            error_validation.open()

...

我的规则:

{
  "rules": {
    "users": {
      ".read": "auth != null",
      ".write": "auth != null",
    }
  }
}

我的代码或规则有什么问题?

我试图验证用户是否真的通过 current_user 进行了身份验证,显然他们是因为它没有返回 None。如果我将 ".read": "auth != null" 设置为 True,它可以工作,但我不希望未经身份验证的用户具有访问权限。

python firebase-realtime-database firebase-security kivymd pyrebase
© www.soinside.com 2019 - 2024. All rights reserved.