в данный момент я отправляю сообщения со статическим серверным ключом
conn.setRequestProperty("Authorization", SERVERKEY);
Теперь я буду отправлять сообщения с токеном доступа через OAuth 2.0.
conn.setRequestProperty("Authorization", "Bearer ACCESSTOKEN");
Токен доступа действителен в течение 1 часа.
Мне нужно получить новый действительный токен доступа.
Я пытаюсь реализовать это с помощью документации Firebase.
В консоли Firebase был создан файл JSON.
private static final String MESSAGING_SCOPE = "https://www.googleapis.com/auth/firebase.messaging";
private static final String[] SCOPES = { MESSAGING_SCOPE };
private static String getAccessToken() throws IOException {
GoogleCredentials googleCredentials = GoogleCredentials
.fromStream(new FileInputStream("service.json"))
.createScoped(Arrays.asList(SCOPES));
googleCredentials.refreshIfExpired();
AccessToken token = googleCredentials.getAccessToken();
return token.getTokenValue();
}
Но по прошествии более длительного времени результат:
Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.util.concurrent.Futures.getDone(Ljava/util/concurrent/Future;)Ljava/lang/Object;
at com.google.auth.oauth2.OAuth2Credentials.finishRefreshAsync(OAuth2Credentials.java:287)
at com.google.auth.oauth2.OAuth2Credentials.access$300(OAuth2Credentials.java:67)
....
Я внедрил библиотеку firebase-admin как проект maven:
com.google.firebase
firebase-admin
9.2.0
Подробнее здесь: https://stackoverflow.com/questions/775 ... -with-java