Подключение к облачной системе обмена сообщениями Spring Firebase - PullRequest
0 голосов
/ 21 января 2020

Я впервые работаю с firebase, и меня немного смущает использование облачных сообщений.

Среда:

У меня есть Spring Microservice, который должен отправлять сообщения (данные, а не уведомления) приложениям по их токену. (независимость от платформы). В качестве протокола я хочу использовать рекомендованное Http v1.

Я создал учетную запись Firebase, добавил тестовый проект, и теперь я хочу поместить туда данные. Насколько я прочитал, нет способа увидеть сообщение, отправленное для отладки?

У меня нет приложения для тестирования потока, потому что он будет разработан externaly.

Текущее поведение:

 I just want to create a first test message. Therefor I use the following code. 
    // myProject from settings- general->ProjectID
    String FIREBASE_API_URL = "https://fcm.googleapis.com/v1/projects/myProject/messages:send";
    // From settings->cloud-messaging
        String FIREBASE_SERVER_KEY = "newServerKey";

    RestTemplate restTemplate = new RestTemplate();
    HttpHeaders httpHeaders = new HttpHeaders();
    httpHeaders.set("Authorization", "Bearer" + FIREBASE_SERVER_KEY);
    httpHeaders.set("Content-Type", "application/json");

    JSONObject json = new JSONObject();
    JSONObject message = new JSONObject();
    message.put("title","Hallo");
    message.put("body","TEst");


    json.put("data", message);
//I was hoping that this has not to be a valid token for testing. 
    json.put("to", "receiverFcmKey");

    System.out.println("Sending :" + json.toString());

    HttpEntity<String> httpEntity = new HttpEntity<>(json.toString(), httpHeaders);
    for(int i =0; i<1; i++) {
        System.out.println("Count:"+ i);
        System.out.println(restTemplate.postForObject(FIREBASE_API_URL, httpEntity, String.class));
}   

Здесь я получаю сообщение об ошибке:

Exception in thread "main" org.springframework.web.client.HttpClientErrorException$Unauthorized: 401 Unauthorized: [no body]

Здесь Я прочитал что я мог бы включить аутентификацию в моих настройках Google API.

ВОПРОС: Я не знаю, где я ошибся. Мне действительно нужно сначала включить API в настройках Google? Неправильно ли настроена аутентификация в шапке? (Я пробовал с пустым после Bearer) Я думал, что процесс аутентификации будет выполняться с помощью ключа сервера.

Это всего лишь настройка тестовой среды, и этого было бы достаточно, чтобы убедиться, что процесс аутентификации работает и сообщения отправляются.

...