Ошибка при отправке сообщения Firebase с Arduino - PullRequest
0 голосов
/ 07 октября 2018

Я пытаюсь запустить эскиз обмена сообщениями Firebase из главной библиотеки здесь, используя nodeMCU: https://github.com/FirebaseExtended/firebase-arduino

Он подключается к Wi-Fi, но продолжает выдавать ошибку об отказе в соединении № 1 при попытке подключения к Firebaseсервер.Я получил отдельный токен из своего приложения для Android, используя метод идентификатора экземпляра get token, зарегистрировал его на консоли в Android Studio и успешно отправил себе сообщение через стандартную консоль Firebase, используя этот токен, так что токен правильный.предполагать.Я ввел токен в определение CLIENT_REGISTRATION_ID.

PHOTO OF TOKEN IN CONSOLE AND METHOD USED

Таким образом, я ввел токен вместе с ключом сервера из мест, выделенных стрелками напод фотографией в скетч, но безуспешно с подключением.

вот пустой оригинальный скетч:

#include <ESP8266WiFi.h>
#include <FirebaseCloudMessaging.h>

// Set these to run example.
#define WIFI_SSID "SSID"
#define WIFI_PASSWORD "PASSWORD"

#define SERVER_KEY "key_from_dashboard"
#define CLIENT_REGISTRATION_ID "key_from_client_after_registration"

void setup() {
  Serial.begin(9600);

  // connect to wifi.
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  Serial.print("connecting");
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    delay(500);
  }
  Serial.println();
  Serial.print("connected: ");
  Serial.println(WiFi.localIP());

  FirebaseCloudMessaging fcm(SERVER_KEY);
  FirebaseCloudMessage message =
    FirebaseCloudMessage::SimpleNotification("Hello World!", "What's happening?");
  FirebaseError error = fcm.SendMessageToUser(CLIENT_REGISTRATION_ID, message);
  if (error) {
    Serial.print("Error:");
    Serial.print(error.code());
    Serial.print(" :: ");
    Serial.println(error.message().c_str());
  } else {
    Serial.println("Sent OK!");
  }
}

void loop() {
}

Для переменной ключа сервера я попытался использовать выделенные поляпо стрелкам на фотографии:

СВЯЗАННОЕ ИЗОБРАЖЕНИЕ ИСПОЛЬЗОВАННЫХ КЛЮЧЕЙ

Кто-нибудь имел какой-либо успех, используя этот эскиз, или знаете, где я ошибаюсь?Спасибо за любую помощь.

1 Ответ

0 голосов
/ 07 октября 2018

Это одна из нескольких известных проблем с эскизом в базе данных.

Предполагается, что идентификатор регистрации Firebase будет отличаться для каждого экземпляра клиентского приложения (не используется совместно для приложений или устройств).Вы можете выкопать тот, который генерируется сессией Android, но это не так просто.Лучше получить новый, сгенерировав ключ и запросив его.

Унаследованные ключи API, которые вы получаете с вашей консоли, являются долгоживущими, но будут только авторизовывать запросы к устаревшему API.

API v1 для HTTP использует кратковременный токен доступа OAuth2.0, созданный для учетной записи службы.чтобы получить это, вы генерируете закрытый ключ из своей учетной записи службы Firebase, а затем используете этот закрытый ключ для запроса токена доступа, который будет использоваться во всех последующих запросах сообщений.По истечении срока действия токена вы получите обновленный, используя тот же закрытый ключ.

Вы можете прочитать об этом здесь: https://firebase.google.com/docs/cloud-messaging/auth-server

Если вы действительно хотите повторно использовать reg IDэто должно быть возможно, хотя ... попробуйте набросок, опубликованный в FirebaseExtended / firebase-arduino выпуск № 250, который другие сообщили, что он работает, когда примерный набросок этого не сделал, с той же ошибкой, с которой вы столкнулись.Вы можете найти это здесь: https://github.com/FirebaseExtended/firebase-arduino/issues/250

...