mobizt/Firebase-ESP-Client

Question: How do handle token error code: -4

ateker01 opened this issue · 2 comments

Intentionally I disable the internet access to the ESP8266 and receiving the following error as expected

00:13:20.046 -> Token info: type = id token (GITKit token), status = on request
00:13:25.066 -> Token info: type = id token (GITKit token), status = error

I eventually want it to quit trying so i can programmatically handle the error with the connectionError() method as seen below code. It however never quit trying - it continuously sends "on request" and receives "error"

What is the suggested way to handle the firebase connection failures? I thought of using if(Firebase.ready()) but this token request happens during setup?

if(Firebase.RTDB.setJSON(&firebaseData, path, &jsonDefault)){
}else{
firebaseData.errorReason().c_str();
connectionError();
delay(100);
}

Below is the setup and I am using version 4.4.14

// Assign the api key (required)
config.api_key = API_KEY;

/* Assign the RTDB URL (required) */
config.database_url = DATABASE_URL;

// Assign the user sign in credentials
auth.user.email = USER_EMAIL;
auth.user.password = USER_PASSWORD;

Firebase.reconnectWiFi(true);
firebaseData.setResponseSize(4096);

// Assign the callback function for the long running token generation task
config.token_status_callback = tokenStatusCallback; //see addons/TokenHelper.h

// Assign the maximum retry of token generation
config.max_token_generation_retry = 5;

// Initialize the library with the Firebase authen and config
Firebase.begin(&config, &auth);

delay(300);

The code you post above is generally can be found from library examples and it does not help anything.

You should start at the code that works as from examples and try to adapt from it.

Something that you changed in examples that is the cause of issue that it is error in coding or logic.

Anyway, delay should be avoided, you don't have any hardware event to be waiting.

If you use WiFiManager, you have to notice this.

// Comment or pass false value when WiFi reconnection will control by your code or third party library e.g. WiFiManager
Firebase.reconnectNetwork(true);