Как подключить Firebase cloud messaging к NodeMCU с помощью HttpClient SSL
Я использую NodeMCU для подключения к API FCM для отправки push-уведомления в мобильное приложение. Я проверял в Postman все работает нормально и отправка push-уведомления на мобильные, но проблема, когда я использую класс HttpClient
в Arduino дает -1
ошибку, если я сделал по протоколу HTTPS константный тип char* cloudMessagingServer = "https://fcm.googleapis.com/fcm/send";
когда я использую только HTTP без SSL константный тип char* cloudMessagingServer = "http://fcm.googleapis.com/fcm/send";
дает кодом ошибки 403
Мой код
const char* cloudMessagingServer = "fcm.googleapis.com/fcm/send";
char json[] = "{\"to\":\"<my_mobile_token>\",\"notification\":{\"title\":\"Hello\",\"body\":\"Yellow\"}}";
HTTPClient http;
http.begin(cloudMessagingServer);
http.addHeader("Authorization", "key=<my_key>");
http.addHeader("Content-Type", "application/json");
int httpResponseCode = http.POST(json);
if (httpResponseCode>0) {
Serial.print("HTTP Response code: ");
Serial.println(httpResponseCode);
}
else {
Serial.print("Error code: ");
Serial.println(httpResponseCode);
}
// Free resources
http.end();
После некоторых поисков я обнаружил что следует добавить отпечаток пальца хоста для создания SSL запроса
Мой код после добавления отпечатка пальца
const char* cloudMessagingServer = "fcm.googleapis.com/fcm/send";
char json[] = "{\"to\":\"<my_mobile_token>\",\"notification\":{\"title\":\"Hello\",\"body\":\"Yellow\"}}";
const char* fingerprint = "a9 07 09 14 98 12 22 b8 58 3f db 6e 93 36 f7 3f 13 e2 72 82";
HTTPClient http;
http.begin(cloudMessagingServer, fingerprint);
http.addHeader("Authorization", "key=<my_key>");
http.addHeader("Content-Type", "application/json");
int httpResponseCode = http.POST(json);
if (httpResponseCode>0) {
Serial.print("HTTP Response code: ");
Serial.println(httpResponseCode);
}
else {
Serial.print("Error code: ");
Serial.println(httpResponseCode);
}
// Free resources
http.end();
когда я использую https во всех случаях, дайте мне -1
@Mohamed Khaled, 👍0
Обсуждение0
Смотрите также:
- NodeMCU - Vin контакт как выход 5V?
- Как заставить 5-вольтовое реле работать с NodeMCU
- ESP8266 не подключается к Wi-Fi
- Разве в узле MCU v3 (LoLin) нет встроенного светодиода?
- Разница между этими двумя платами NodeMCU?
- NodeMCU - использовать кнопку flash в качестве входного сигнала в loop()
- Как определить размер Flash?
- Использование датчика рН 5В с узлом 3,3В
https:// отсутствует в URL-адресе. правильный способ-создать объект WiFiClentSecure и предоставить его HttpClient. см. Пример BasicHttpsClient библиотеки ESP8266HttpClient, @Juraj