Ошибка вызова FCM Pu sh Уведомление api throu - PullRequest
0 голосов
/ 13 апреля 2020

Я получаю приведенную ниже ошибку в моем Java приложении при отправке Pu sh Уведомления с использованием Firebase, развернутого на сервере Tomcat CentOS.

Но тот же код работает нормально и отправляет Pu sh Уведомление из моего локального окружения P C.

java.util.concurrent.ExecutionException:
com.google.firebase.messaging.FirebaseMessagingException: Error while
calling FCM backend service
        at com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.java:500)
~[guava-20.0.jar:na]
        at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:479)
~[guava-20.0.jar:na]
        at com.google.common.util.concurrent.AbstractFuture$TrustedFuture.get(AbstractFuture.java:76)
~[guava-20.0.jar:na]
        at com.google.common.util.concurrent.ForwardingFuture.get(ForwardingFuture.java:62)
~[guava-20.0.jar:na]
        at com.mymediport.mmpnotification.service.FCMService.sendAndGetResponse(FCMService.java:40)
~[classes/:0.0.1]
        at com.mymediport.mmpnotification.service.FCMService.sendMessageToToken(FCMService.java:35)
~[classes/:0.0.1]
        at com.mymediport.mmpnotification.model.PushNotificationModel.SendPushToAccount(PushNotificationModel.java:44)
~[classes/:0.0.1]
        at com.mymediport.mmpnotification.model.PushNotificationModel$$FastClassBySpringCGLIB$$ac386b15.invoke(<generated>)
[classes/:0.0.1]
        at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
[spring-core-5.2.4.RELEASE.jar:5.2.4.RELEASE]
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:769)
[spring-aop-5.2.4.RELEASE.jar:5.2.4.RELEASE]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
[spring-aop-5.2.4.RELEASE.jar:5.2.4.RELEASE]
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747)
[spring-aop-5.2.4.RELEASE.jar:5.2.4.RELEASE]
        at org.springframework.aop.interceptor.AsyncExecutionInterceptor.lambda$invoke$0(AsyncExecutionInterceptor.java:115)
[spring-aop-5.2.4.RELEASE.jar:5.2.4.RELEASE]
        at org.springframework.aop.interceptor.AsyncExecutionAspectSupport.lambda$doSubmit$3(AsyncExecutionAspectSupport.java:276)
~[spring-aop-5.2.4.RELEASE.jar:5.2.4.RELEASE]
        at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1590)
~[na:1.8.0_181]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
~[na:1.8.0_181]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
~[na:1.8.0_181]
        at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_181] Caused by: com.google.firebase.messaging.FirebaseMessagingException:
Error while calling FCM backend service
        at com.google.firebase.messaging.FirebaseMessagingClientImpl.send(FirebaseMessagingClientImpl.java:129)
~[firebase-admin-6.8.1.jar:na]
        at com.google.firebase.messaging.FirebaseMessaging$1.execute(FirebaseMessaging.java:139)
~[firebase-admin-6.8.1.jar:na]
        at com.google.firebase.messaging.FirebaseMessaging$1.execute(FirebaseMessaging.java:136)
~[firebase-admin-6.8.1.jar:na]
        at com.google.firebase.internal.CallableOperation.call(CallableOperation.java:36)
~[firebase-admin-6.8.1.jar:na]
        at com.google.common.util.concurrent.TrustedListenableFutureTask$TrustedFutureInterruptibleTask.runInterruptibly(TrustedListenableFutureTask.java:111)
~[guava-20.0.jar:na]
        at com.google.common.util.concurrent.InterruptibleTask.run(InterruptibleTask.java:58)
~[guava-20.0.jar:na]
        at com.google.common.util.concurrent.TrustedListenableFutureTask.run(TrustedListenableFutureTask.java:75)
~[guava-20.0.jar:na]
        ... 3 common frames omitted Caused by: java.io.IOException: Error getting access token for service account:
        at com.google.auth.oauth2.ServiceAccountCredentials.refreshAccessToken(ServiceAccountCredentials.java:395)
~[google-auth-library-oauth2-http-0.11.0.jar:na]
        at com.google.auth.oauth2.OAuth2Credentials.refresh(OAuth2Credentials.java:179)
~[google-auth-library-oauth2-http-0.11.0.jar:na]
        at com.google.auth.oauth2.OAuth2Credentials.getRequestMetadata(OAuth2Credentials.java:165)
~[google-auth-library-oauth2-http-0.11.0.jar:na]
        at com.google.auth.http.HttpCredentialsAdapter.initialize(HttpCredentialsAdapter.java:96)
~[google-auth-library-oauth2-http-0.11.0.jar:na]
        at com.google.firebase.internal.FirebaseRequestInitializer.initialize(FirebaseRequestInitializer.java:55)
~[firebase-admin-6.8.1.jar:na]
        at com.google.api.client.http.HttpRequestFactory.buildRequest(HttpRequestFactory.java:93)
~[google-http-client-1.25.0.jar:1.25.0]
        at com.google.api.client.http.HttpRequestFactory.buildPostRequest(HttpRequestFactory.java:133)
~[google-http-client-1.25.0.jar:1.25.0]
        at com.google.firebase.messaging.FirebaseMessagingClientImpl.sendSingleRequest(FirebaseMessagingClientImpl.java:147)
~[firebase-admin-6.8.1.jar:na]
        at com.google.firebase.messaging.FirebaseMessagingClientImpl.send(FirebaseMessagingClientImpl.java:125)
~[firebase-admin-6.8.1.jar:na]
        ... 9 common frames omitted Caused by: java.net.SocketException: Connection reset
        at java.net.SocketInputStream.read(SocketInputStream.java:210) ~[na:1.8.0_181]
        at java.net.SocketInputStream.read(SocketInputStream.java:141) ~[na:1.8.0_181]
        at sun.security.ssl.InputRecord.readFully(InputRecord.java:465)
~[na:1.8.0_181]
        at sun.security.ssl.InputRecord.read(InputRecord.java:503) ~[na:1.8.0_181]
        at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:983)
~[na:1.8.0_181]
        at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1385)
~[na:1.8.0_181]
        at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1413)
~[na:1.8.0_181]
        at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1397)
~[na:1.8.0_181]
        at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559)
~[na:1.8.0_181]
        at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
~[na:1.8.0_181]
        at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1334)
~[na:1.8.0_181]
        at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1309)
~[na:1.8.0_181]
        at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:259)
~[na:1.8.0_181]
        at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:77)
~[google-http-client-1.25.0.jar:1.25.0]
        at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:981)
~[google-http-client-1.25.0.jar:1.25.0]
        at com.google.auth.oauth2.ServiceAccountCredentials.refreshAccessToken(ServiceAccountCredentials.java:393)
~[google-auth-library-oauth2-http-0.11.0.jar:na]
        ... 17 common frames omitted

Вот код, который я использую:

    public void sendMessageToToken(PushNotificationRequest request)
            throws InterruptedException, ExecutionException {
        Message message = getPreconfiguredMessageToToken(request);
        String response = sendAndGetResponse(message);
        logger.info("Sent message to token. Device token: " + request.getToken() + ", " + response);
    }

    private String sendAndGetResponse(Message message) throws InterruptedException, ExecutionException {
        return FirebaseMessaging.getInstance().sendAsync(message).get();
    }
    private ApnsConfig getApnsConfig(String topic) {
        return ApnsConfig.builder()
                .setAps(Aps.builder().setCategory(topic).setThreadId(topic).build()).build();
    }

    private Message getPreconfiguredMessageToToken(PushNotificationRequest request) {
        return getPreconfiguredMessageBuilder(request).setToken(request.getToken())
                .build();
    }
    private Message.Builder getPreconfiguredMessageBuilder(PushNotificationRequest request) {
        AndroidConfig androidConfig = getAndroidConfig(request.getTopic());
        ApnsConfig apnsConfig = getApnsConfig(request.getTopic());
        return Message.builder()
                .setApnsConfig(apnsConfig).setAndroidConfig(androidConfig).setNotification(
                        new Notification(request.getTitle(), request.getMessage()));
    }

pom. xml

<dependency>
    <groupId>com.google.firebase</groupId>
    <artifactId>firebase-admin</artifactId>
    <version>6.8.1</version>
</dependency>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...