Используя оболочку 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, который отображается в сообщении об исключении?
Спасибо!