Получить информацию об ошибке Pyrebase HTTPError - PullRequest
0 голосов
/ 06 мая 2020

Используя оболочку pyrebase для аутентификации Firebase, при попытке создать нового пользователя, который уже является пользователем, pyrebase помещает ответ API Google в сообщение HTTPError. Но когда я пытаюсь зафиксировать это исключение, он не распознает HTTPError как исключение. Я могу получить доступ к исключению, используя expect Exception as e показать более подробно ниже.

Код:

config = {
  "apiKey": os.environ.get('WEB_API_KEY'),
  "authDomain": "project.firebaseapp.com",
  "databaseURL": "https://project.firebaseio.com",
  "storageBucket": "project.appspot.com",
  "serviceAccount": os.environ.get('FIREBASE_APPLICATION_CREDENTIALS')
}

firebase = pyrebase.initialize_app(config)

auth = firebase.auth()

# Attempt to register a user that already exists
try:
    user = auth.create_user_with_email_and_password('myemail@email.com', 'mypassword')
except HTTPError as e:
    print('Handling HTTPError:', e)

Это приведет к выводу:

Traceback (most recent call last):
  File "<console>", line 3, in <module>
NameError: name 'HTTPError' is not defined

Я могу поймать ошибка, если я воспользуюсь более общим подходом и использую:

try:
    user = auth.create_user_with_email_and_password('myemail@email.com', 'mypassword')
except Exception as e:
    print(e.args)

Это затем корректно распечатает исключение:

(HTTPError('400 Client Error: Bad Request for url: https://www.googleapis.com/identitytoolkit/v3/relyingparty/signupNewUser?key=<WEB_API_KEY>'), '{\n  "error": {\n    "code": 400,\n    "message": "EMAIL_EXISTS",\n    "errors": [\n      {\n        "message": "EMAIL_EXISTS",\n        "domain": "global",\n        "reason": "invalid"\n      }\n    ]\n  }\n}\n')

Это дает мне информацию, но это строка.

Как мне получить доступ к ответу JSON, который отображается в сообщении об исключении?

Спасибо!

1 Ответ

3 голосов
/ 13 августа 2020
json.loads(e.args[1])['error']['message']

это даст вам в результате: EMAIL_EXISTS

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...