Firebase帐户创建和登录的错误处理

2024-04-29 14:36:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试处理用户注册或登录我的应用程序时出现的错误。我试图处理的第一个错误是,当用户试图使用数据库中已经存在的电子邮件创建帐户时。我得到以下HTTPError

 requests.exceptions.HTTPError: [Errno 400 Client Error: Bad Request for url: https://www.googleapis.com/identitytoolkit/v3/relyingparty/signupNewUser?key=] {
   "error": {
     "code": 400,
     "message": "EMAIL_EXISTS",
     "errors": [
       {
         "message": "EMAIL_EXISTS",
         "domain": "global",
         "reason": "invalid"
       }
     ]
   }
 }

我想访问下面的"message": "EMAIL_EXISTS"值,但不确定如何访问。我添加了以下代码,但会产生以下错误:

     error_message = error["error"]["message"]
 TypeError: 'HTTPError' object is not subscriptable
import requests
import pyrebase

class CreateAccount():

    def create_account(self):

        try:
            auth.create_user_with_email_and_password(self.email, self.password)

        except requests.exceptions.HTTPError as error:
            print(error)
            error_message = error["error"]["message"]
            print(error_message)

Tags: importselfmessageemail错误createexistserror
2条回答

经过多次搜索,我找到了这个问题的答案:

        except requests.HTTPError as e:
            error_json = e.args[1]
            error = json.loads(error_json)['error']['message']
            if error == "EMAIL_EXISTS":
                print("Email already exists")

我试过你在评论中提供的代码,但我无法使用。可能是请求模块的版本问题或其他问题

但是,以下代码适用于我的情况:

except requests.exceptions.HTTPError as e:
  error_json = e.args[1]
  error = json.loads(error_json)['error']['message']
  if error == "EMAIL_EXISTS":
      print("Email already exists")

是的,requests.exceptions.HTTPError而不是requests.HTTPError

相关问题 更多 >