Я работаю над проектом ESP32, который использует считыватель RFID для регистрации данных о посещаемости в базе данных Firebase Realtime. Я использую клиентскую библиотеку Firebase ESP от Mobizt.
Я включил анонимную аутентификацию в своем проекте Firebase, но постоянно получаю следующие сообщения об ошибках в последовательном мониторе:
Информация о токене: тип = токен с идентификатором, статус = ошибка
Ошибка токена: INVALID_EMAIL
Информация о токене: тип = токен с идентификатором, статус = ошибка
Ошибка токена: ошибка запрос
Вот мой код:
Код: Выделить всё
#include
#include
#include
#include
#include
#include [url=/]Home[/url][url=/profiles]Profiles[/url][url=/exportData]Export Data[/url]");
}
void renderFooter(String& html) {
html.concat("");
}
void configureTime() {
configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
Serial.println("Configuring time...");
struct tm timeinfo;
int retries = 0;
const int maxRetries = 10;
while (!getLocalTime(&timeinfo) && retries < maxRetries) {
Serial.println("Waiting for time synchronization...");
delay(1000);
retries++;
}
if (retries < maxRetries) {
Serial.printf("Time configured: %04d-%02d-%02d %02d:%02d:%02d\n",
timeinfo.tm_year + 1900,
timeinfo.tm_mon + 1,
timeinfo.tm_mday,
timeinfo.tm_hour,
timeinfo.tm_min,
timeinfo.tm_sec);
} else {
Serial.println("Failed to obtain time");
}
}
String getFormattedTime() {
struct tm timeinfo;
if (!getLocalTime(&timeinfo)) {
return "Time not available";
}
char buffer[25];
strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", &timeinfo);
return String(buffer);
}
// Token status callback function
void tokenStatusCallback(TokenInfo info) {
Serial.printf("Token Info: type = %s, status = %s\n", getTokenType(info).c_str(), getTokenStatus(info).c_str());
if (info.status == token_status_error) {
Serial.printf("Token Error: %s\n", info.error.message.c_str());
}
}
String getTokenType(TokenInfo info) {
switch (info.type) {
case token_type_undefined:
return "undefined";
case token_type_legacy_token:
return "legacy token";
case token_type_id_token:
return "ID token";
case token_type_custom_token:
return "custom token";
case token_type_oauth2_access_token:
return "OAuth2 access token";
default:
return "unknown";
}
}
String getTokenStatus(TokenInfo info) {
switch (info.status) {
case token_status_uninitialized:
return "uninitialized";
case token_status_on_signing:
return "on signing";
case token_status_on_request:
return "on request";
case token_status_on_refresh:
return "on refresh";
case token_status_ready:
return "ready";
case token_status_error:
return "error";
default:
return "unknown";
}
}
Дважды проверил мой ключ API и URL-адрес базы данных, чтобы убедиться, что они верны.
Убедился, что auth.user.email и auth.user.password нигде в моем коде не установлены.
Обновил клиентскую библиотеку Firebase ESP до последней версии (я использую версию 4.3.1).
Дожидался завершения аутентификации перед взаимодействием с Firebase, используя цикл для проверки Firebase.ready().
Стерил флэш-память ESP32, чтобы удалить все старые учетные данные.
Протестировано с аутентификацией по электронной почте/паролю, которая работает хорошо, но я предпочитаю использовать анонимную аутентификацию для этого проекта.
Несмотря на эти усилия, ошибка INVALID_EMAIL сохраняется.
Подробнее здесь: https://stackoverflow.com/questions/790 ... entication