如何从firebase检索UID并将其添加到firebase DB的子级

时间:2016-11-14 23:44:01

标签: java android firebase firebase-realtime-database

首先我对firebase数据库很新。我正在研究如何从firebase检索当前的UID(当前登录)并将其插入firebase的子节点以及通过oncreate的值。

我正在尝试将mycurrent UID推向Firebase。我无法将它推向firebase。这是我的firebase结构:

(例如,UID Fo2SfEfryWEjmxr4yIQwM5LQQx2和消防基础中的值'720'

尝试后,我仍然无法获取以下代码来检索UID。我在使用(new ValueEventListener()以及此行时遇到了问题。

Map<String, Queue> data = postSnapshot.getValue(new GenericTypeIndicator<Map<String, Queue>>() {});

这是我的onCreate供参考

    mRef = new Firebase("https://sunwayfinancequeue.firebaseio.com/");
    mRef.child("UserQueue");
    mRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot snapshot) {
            for (DataSnapshot postSnapshot : snapshot.getChildren()) {
                Queue queue = postSnapshot.getValue(Queue.class);
                System.out.println(Queue.getTotalqueue() + " - " + Queue.getServingqueue());
                Map<String, Queue> data = postSnapshot.getValue(new GenericTypeIndicator<Map<String, Queue>>() {});
                Map.Entry<String, Queue> entry = data.entrySet().iterator().next();
                String uid = entry.getKey();
                Log.d("Firebase UID ", uid);

            }
        }

        @Override
        public void onCancelled(FirebaseError firebaseError) {
            System.out.println("The read failed: " + firebaseError.getMessage());

        }
    });

这是我的构造函数:

public class Queue {

private static double servingqueue;
private static double totalqueue;
private static String uid;

public Queue(Double servingqueue, Double totalqueue) {
    Queue.servingqueue = servingqueue;
    Queue.totalqueue = totalqueue;

}

public static double getServingqueue() {
    return servingqueue;
}

public static void setServingqueue(double servingqueue) {
    Queue.servingqueue = servingqueue;
}

public static double getTotalqueue() {
    return totalqueue;
}

public static void setTotalqueue(double totalqueue) {
    Queue.totalqueue = totalqueue;
}

public static String getUid() {
    return uid;
}

public static void setUid(String uid) {
    Queue.uid = uid;
    }
}

2 个答案:

答案 0 :(得分:3)

您正在使用旧版Firebase Database SDK, 2.5.x。如果您刚开始使用数据库,最好使用新的9.x.x SDK,尤其是在使用新SDK的Firebase身份验证时。如果在同一版本中使用旧版和新版SDK,则可能会遇到问题。请参阅Upgrade Guide

答案 1 :(得分:2)

您想要使用Firebase身份验证。查看此链接以设置Android应用的Firebase身份验证:

https://firebase.google.com/docs/auth/android/start/

此链接将帮助您管理用户并向您展示如何获取当前用户的UID:

https://firebase.google.com/docs/auth/android/manage-users

设置Firebase身份验证后,您将使用此段代码获取当前用户的UID。

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user != null) {
    String UID = user.getUid();
} else {
    // No user is signed in
}