gpt4 book ai didi

Python Firebase 身份验证

转载 作者:太空宇宙 更新时间:2023-11-03 10:58:49 25 4
gpt4 key购买 nike

所以我正在尝试从 Firebase 获取一些数据,其中当然定义了一些规则/安全约束。我可以从 Login & Auth 选项卡验证我的用户,我想从 firebase 获取数据,但我的用户仍未通过验证。

user = ref.authenticate(email, password) ,为 user

返回以下内容
{
u'token':{some long token here}',
u'user':{
u'uid':u'ef44b781-8842-4f28-abf0-2ac9aa0b2bea',
u'provider':u'password',
u'email':u'user@email.com',
u'isTemporaryPassword':False,
u'sessionKey':u'{session key here}}',
u'md5_hash':u'{md5_hash here}}',
u'id':u'ef44b781-8842-4f28-abf0-2ac9aa0b2bea'
}
}

现在我知道用户已通过身份验证(否则它会返回一些错误信息,我想做一个简单的 GET conversations = firebase.get(FIREBASE_NAME + '/conversations/' + me) ,其中“我”是 user['user']['uid']

conversations 的结构如下:

conversations/my-uid/other-uid/{data}

我认为我的用户已通过身份验证,但它仍然返回 PermissionDenied

编辑通过使用不同的库解决了这个问题,你可以找到 here .我使用的初始库不支持身份验证,而这个库支持。解决方法是通过实现另一个函数的一些功能并按如下方式发送我的 token :FIREBASE.child('/messages/').get(token=token)

最佳答案

你不应该在 URL 中发送密码,你可以这样做:

__FIREBASE_USER_VERIFY_SERVICE = "https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyPassword"
__FIREBASE_API_KEY = __your_api_key_here__

def user_login(email, passwd):
url = "%s?key=%s" % (__FIREBASE_USER_VERIFY_SERVICE, __FIREBASE_API_KEY)
data = {"email": email,
"password": passwd,
"returnSecureToken": True}
result = requests.post(url, json=data)
is_login_successful = result.ok
json_result = result.json()
return json_result # authToken=> json_result['idToken']

如果成功,结果如下:

{
"displayName": "",
"email": "your_users_email@example.com",
"expiresIn": "3600",
"idToken": "abc123...",
"kind": "identitytoolkit#VerifyPasswordResponse",
"localId": "UWQ...x2",
"refreshToken": "def098...",
"registered": true
}

如果失败(密码错误等):

{
"error": {
"code": 400,
"errors": [
{
"domain": "global",
"message": "INVALID_PASSWORD",
"reason": "invalid"
}
],
"message": "INVALID_PASSWORD"
}
}

或者可能是

{
"error": {
"code": 400,
"errors": [
{
"domain": "global",
"message": "MISSING_PASSWORD",
"reason": "invalid"
}
],
"message": "MISSING_PASSWORD"
}
}

关于Python Firebase 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36617599/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com