使用Java的Firebase管理员SDK无法连接

时间:2019-08-22 09:16:17

标签: java database firebase firebase-realtime-database admin-sdk

我正在尝试使用Firebase数据库创建Java桌面RMI数据管理系统。我的第一步是使用admin sdk确认firebase的连接性。我完全按照指南中的步骤进行,没有任何进展。该程序会执行,但是我的Firebase控制台中没有数据修改。

以下是我到目前为止的代码。

public class Main{

    public static class User2 {

        public String date_of_birth;
        public String full_name;
        public String nickname;

        public User2(String dateOfBirth, String fullName) {
            this.date_of_birth = dateOfBirth;
            this.full_name = fullName;
        }

        public User2(String dateOfBirth, String fullName, String nickname) {
            this.date_of_birth = dateOfBirth;
            this.full_name = fullName;
            this.nickname = nickname;
        }
    }

    public static void main(String[] args) {

        FileInputStream serviceAccount = null;
        try {

            serviceAccount = new FileInputStream("rathnapuralabs-firebase-adminsdk-okzic-f6313557b4.json");
        } catch (FileNotFoundException e) {

            e.printStackTrace();
        }

        FirebaseOptions options = null;
        try {

            options = new FirebaseOptions.Builder()
                    .setCredentials(GoogleCredentials.fromStream(serviceAccount))
                    .setDatabaseUrl("https://rathnapuralabs.firebaseio.com")
                    .build();
        } catch (IOException e) {

            e.printStackTrace();
        }
        FirebaseApp.initializeApp(options);

        DatabaseReference ref = FirebaseDatabase.getInstance()
                .getReference();

        DatabaseReference usersRef = ref.child("users2");

        Map<String, User2> users = new HashMap<>();
        users.put("alanisawesome", new User2("June 23, 1912", "Alan Turing"));
        users.put("gracehop", new User2("December 9, 1906", "Grace Hopper"));

        usersRef.setValueAsync(users);

        ref.addListenerForSingleValueEvent(new ValueEventListener() {
           @Override
           public void onDataChange(DataSnapshot dataSnapshot) {
               Object document = dataSnapshot.getValue();
               System.out.println(document);
           }

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

这段代码给了我三三行错误。

SLF4J:无法加载类“ org.slf4j.impl.StaticLoggerBinder”。

SLF4J:默认为不操作(NOP)记录器实现

SLF4J:有关更多详细信息,请参见http://www.slf4j.org/codes.html#StaticLoggerBinder

但是有些东西告诉我,即使出现这些错误,数据仍应保存到Firebase中。

以下是代码和json密钥的github链接。

https://github.com/bandarawaththa/Testing-Firebase-with-realtime-db.git

1 个答案:

答案 0 :(得分:1)

以下代码对我有用:

try {
            FirebaseOptions options = new FirebaseOptions.Builder()
                    .setCredentials(GoogleCredentials
                                    .fromStream(new ClassPathResource("/firebase-authentication.json").getInputStream()))
                    .build();

            if (FirebaseApp.getApps().isEmpty()) {
                FirebaseApp.initializeApp(options);
            }

        } catch (IOException e) {
            e.printStackTrace();
        }

“ / firebase-authentication.json”位于资源文件夹中。