WifiManager Fails To Reconnect (Auth Error)

I’m trying to use tzapu WifiManager which is working perfectly except on reconnects I get an “Invalid Auth Token” error. So for instance if the internet goes down and comes back up it will try and reconnect but gives the Auth error. If I do a full restart it will automatically connect like normal.


char blynk_token[34] = "KhlDzab8Vk4HeeYCLe2WpFXvQbRcZcZn";  // Not Real Token
char name[9] ;
bool shouldSaveConfig = false;
    void saveConfigCallback () {
      Serial.println("Should save config");
      shouldSaveConfig = true;
    }

void setup(){
  Serial.begin(74880);
    snprintf(name, 15, "Dimmer_%s", blynk_token);

  //read configuration from FS json
  Serial.println("mounting FS...");

  if (SPIFFS.begin()) {
    Serial.println("mounted file system");
    if (SPIFFS.exists("/config.json")) {
      //file exists, reading and loading
      Serial.println("reading config file");
      File configFile = SPIFFS.open("/config.json", "r");
      if (configFile) {
        Serial.println("opened config file");
        size_t size = configFile.size();
        // Allocate a buffer to store contents of the file.
        std::unique_ptr<char[]> buf(new char[size]);

        configFile.readBytes(buf.get(), size);
        DynamicJsonBuffer jsonBuffer;
        JsonObject& json = jsonBuffer.parseObject(buf.get());
        json.printTo(Serial);
        if (json.success()) {
          Serial.println("\nparsed json");

          strcpy(blynk_token, json["blynk_token"]);

        } else {
          Serial.println("failed to load json config");
        }
        configFile.close();
      }
    }
  } else {
    Serial.println("failed to mount FS");
  }
  //end read

  // The extra parameters to be configured
  // id/name placeholder/prompt default length
  WiFiManagerParameter custom_blynk_token("blynk", "blynk token", blynk_token, 34);

  //WiFiManager
  //Local intialization.
  WiFiManager wifiManager;

  //set config save notify callback
  wifiManager.setSaveConfigCallback(saveConfigCallback);
  
  //add all your parameters here
  wifiManager.addParameter(&custom_blynk_token);

  //set minimum quality of signal so it ignores AP's under that quality
  //defaults to 8%
  wifiManager.setMinimumSignalQuality();

  //fetches ssid and pass and tries to connect
  //if it does not connect it starts an access point with the specified name
  //and goes into a blocking loop awaiting configuration
  if (!wifiManager.autoConnect(name, "password")) {
    Serial.println("failed to connect and hit timeout");
    delay(3000);
    //reset and try again, or maybe put it to deep sleep
    ESP.reset();
    delay(5000);
  }

  //if you get here you have connected to the WiFi
  Serial.println("connected...");

  //read updated parameters
  strcpy(blynk_token, custom_blynk_token.getValue());

  //save the custom parameters to FS
  if (shouldSaveConfig) {
    Serial.println("saving config");
    DynamicJsonBuffer jsonBuffer;
    JsonObject& json = jsonBuffer.createObject();
    json["blynk_token"] = blynk_token;

    File configFile = SPIFFS.open("/config.json", "w");
    if (!configFile) {
      Serial.println("failed to open config file for writing");
    }

    json.printTo(Serial);
    json.printTo(configFile);
    configFile.close();
    //end save
  }

When you compiled and uploaded your sketch, what settings did you use?

The serial output from WiFi Manager is very useful for debugging. What does it tell you?

Pete.

Hi!

I’m getting the same error too. Did you manage to solve this out?.

Regards!
Martin.-

It’s possible that your hardware is trying to reconnect but your router is not back online yet.
So it can not log in because your router is not ready, When you reboot your board it then sees the router.