首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取Pyrebase HTTPError信息

获取Pyrebase HTTPError信息
EN

Stack Overflow用户
提问于 2020-05-06 12:36:40
回答 1查看 216关注 0票数 0

在尝试创建一个已经是用户的新用户时,使用Firebase身份验证的pyrebase包装器,pyrebase会将google API响应包装在HTTPError消息中。但是,当我尝试捕获此异常时,它不会将HTTPError识别为异常。我可以通过使用下面更详细的expect Exception as e显示来访问该异常。

代码:

代码语言:javascript
复制
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)

这将输出:

代码语言:javascript
复制
Traceback (most recent call last):
  File "<console>", line 3, in <module>
NameError: name 'HTTPError' is not defined

如果我采取更通用的方法并使用以下命令,我可以捕获错误:

代码语言:javascript
复制
try:
    user = auth.create_user_with_email_and_password('myemail@email.com', 'mypassword')
except Exception as e:
    print(e.args)

然后,这将优雅地打印异常:

代码语言:javascript
复制
(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?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2020-08-14 03:17:25

代码语言:javascript
复制
json.loads(e.args[1])['error']['message']

这将为您提供结果:EMAIL_EXISTS

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61627506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档