Home > database >  Exception handling of expired firebase auth tokens
Exception handling of expired firebase auth tokens

Time:03-17

I have a python flask app that links to a firebase realtime database using pyrebase4. I would like to create a try/except block that catches exceptions to do with unauthorised or expired access tokens trying to access data records. I have tried implementing the following:

    import from urllib.error import HTTPError
    from flask import jsonify

    # Fetch task from db using access token.
    try:
        data = db.child("tasks").child(task["id"]).get(accessToken)
        return jsonify(data.val()), 200
    except HTTPError as e:
        return jsonify({"msg": f"Authorisation error:{e}"}), 400

When testing the block with an expired token I am presented with the following error:

...raise HTTPError(http_error_msg, response=self) requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: URL

During handling of the above exception, another exception occurred:

...raise HTTPError(e, request_object.text) requests.exceptions.HTTPError: [Errno 401 Client Error: Unauthorized for url: URL] { "error" : "Auth token is expired"}

Both errors reference the line: data = db.child("tasks").child(task["id"]).get(accessToken)

What exactly is happening here and how would I go about handling this exception within an exception?

CodePudding user response:

You may be importing 'HTTPError' from a different library than the pyrebase4 package uses. Check you are importing the error from the correct library. E.g.

from requests.exceptions import HTTPError

not

from urllib.error import HTTPError
  • Related