1

当用户注册或登录我的应用程序时,我正在尝试处理错误。我要处理的第一个错误是当用户尝试使用数据库中已存在的电子邮件创建帐户时。我得到以下信息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)
4

2 回答 2

4

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

        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")
于 2020-04-29T20:56:15.860 回答
0

我已经尝试了您在评论中提供的代码,但我无法使其工作。可能是请求模块的版本问题或其他问题。

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

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.

于 2020-09-13T14:39:10.570 回答