我正在尝试在我的 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,它可以工作,但我不希望未经身份验证的用户具有访问权限。