简体   繁体   中英

Firebase admin SDK setup in Google App engine

FirebaseOptions options = new FirebaseOptions.Builder()
                .setCredential(FirebaseCredentials.applicationDefault())
                .setDatabaseUrl("https://mkastrive.firebaseio.com")
                .build();
        FirebaseApp defaultApp = FirebaseApp.initializeApp(options);
        DatabaseReference ref = defaultDatabase
                .getInstance()
                .getReference("users");

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

            @Override
            public void onCancelled(DatabaseError databaseError) {
                System.out.println("in onCancelled");
                System.out.println(databaseError.toString());
            }
        });

I'm doing the above in the Google Cloud Module in Android. I think my Firebase's initialization is successful because System.out.println("usersRef.push(): " + usersRef.push()); // Working System.out.println("usersRef.push(): " + usersRef.push()); // Working But I do not see anything for addListenerForSingleValueEvent . I do not see any error/warnings in the logs either. My database rules are set up for anyone to be able to read/write data.

Update 1: According to the suggestion on using setValue(), I tried the example on the firebase's documents:

DatabaseReference usersRef1 = ref.child("users");

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

usersRef1.setValue(users);

But this is not inserting in the database either, and also no errors. Log's blank.

Update 2: Some logs

FirebaseApp defaultApp = FirebaseApp.initializeApp(options);
this.defaultDatabase = FirebaseDatabase.getInstance().getReference();
defaultDatabase.child("users").getPath(): https://mkastrive.firebaseio.com
defaultDatabase.child("users").getPath(): /users

Calling push() doesn't make any changes to the database. That's probably why your listener isn't being invoked. push() just returns a DatabaseReference that you can use to make changes at the location represented by that reference. The key of that location (the unique push id) is generated completely on the client.

Try actually writing a value to the database using setValue() on the DatabaseReference returned by push() .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM