Java-Firebase соединение не работает - PullRequest
0 голосов
/ 05 июня 2018

Я пытался подключить динамический веб-проект в Eclipse EE к Firebase.Я загрузил все необходимые зависимости (из проекта maven).

Вот код, который я использовал непосредственно из документации Firebase на Java.

public class FirebaseUpdater {

public static void main(String[] args){
    FileInputStream serviceAccount;
    try {
        serviceAccount = new 
                FileInputStream("C:/Users/Asus/workspace/school-dy2"
                        + "/schoolbackup_service.json");

        FirebaseOptions options = new FirebaseOptions.Builder()
                .setCredentials(GoogleCredentials.fromStream(serviceAccount))
                .setDatabaseUrl("https://schoolbackup-f2429.firebaseio.com/")
                .build();

        FirebaseApp.initializeApp(options);

        // As an admin, the app has access to read and write all data, 
        //regardless of Security Rules
        DatabaseReference ref = FirebaseDatabase.getInstance()
            .getReference();
        DatabaseReference attendance = ref.child("Attendance1");

        attendance.setValueAsync("Debarred");
        System.out.println(attendance.toString());

        attendance.addListenerForSingleValueEvent(new ValueEventListener() {

          public void onDataChange(DataSnapshot dataSnapshot) {
              System.out.println("Datasnapshot Received");
              Object document = dataSnapshot.getValue();
              System.out.println(dataSnapshot.getKey());
          }

          public void onCancelled(DatabaseError error) {
          }
        });

    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
}

Я также использовал правильныепроцедура получения ключа учетной записи службы (Firebase Console-> Пользователи и разрешения-> Учетные записи служб-> Создать новый закрытый ключ)

Правила безопасности базы данных также являются общедоступными (с самого начала это не должно вызывать проблем)так как у меня есть ключ учетной записи службы):

{
"rules": {
    ".read": true,
    ".write": true
    }
}

Проект успешно компилируется, и подключение к Интернету не является проблемой.

Я также проверил URL-адрес рабочей области.Он правильно переносит меня в базу данных в браузере.

Однако, несмотря на все это, мой проект, похоже, не подключается к базе данных firebase и не обновляет значения.

Может кто-нибудь сказать мне, какие могут быть возможные проблемы?Я зашел в тупик.

Обратите внимание, что я использую eclipse ee (динамический веб-проект) и напрямую импортировал зависимости maven для com.google.firebase (groupID), firebase-admin (artifactID).), 6.2.0 (версия).

Может ли быть так, что я не могу использовать зависимости maven для динамического веб-проекта?Является ли метод ключа учетной записи службы проблемой?Есть ли возможный обходной путь для этого?

РЕДАКТИРОВАТЬ: я попытался распечатать GoogleCredentials.fromStream (serviceAccount), чтобы увидеть, что не так.Вот что я получил:

    ServiceAccountCredentials{clientId=109785559732337174527, clientEmail=firebase-adminsdk-0into@schoolbackup-f2429.iam.gserviceaccount.com, privateKeyId=5512743509a43e1371cf88ec3feba4007abe4bf1, transportFactoryClassName=com.google.auth.oauth2.OAuth2Utils$DefaultHttpTransportFactory, tokenServerUri=https://accounts.google.com/o/oauth2/token, scopes=[], serviceAccountUser=null}

serviceAccountUser - ноль.Может ли это быть проблемой?Если да, то как мне это решить.

...