2016-11-14 41 views
2

首先我对firebase数据库非常陌生。我正在研究如何从firebase中检索当前的UID(即currenty登录到的),并通过oncreate将其插入到firebase的子项以及值中。如何从Firebase中检索UID并将其添加到Firebase的子项目DB

我试图推送mycurrent UID,它对Firebase有价值。我无法将其推送到Firebase。这里是我的火力结构:

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

尝试后,我仍然无法得到以下代码来检索UID。我在(new ValueEventListener()以及这条线路上遇到了问题。

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

这里是我的参考

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()); 

     } 
    }); 

的onCreate这里是我的构造函数:

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

你想用火力地堡认证。看看这个链接来设置火力地堡认证为您的Android应用程序:

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 
} 
+0

感谢您的回复,我设置了不久前的Firebase身份验证。但我遇到了将uid发送回firebase db的问题以及我在商店中存储的值。 –

3

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

+0

谢谢。我正在使用最新的'compile'c​​om.google.firebase:firebase-auth:9.8.0' compile'c​​om.google.firebase:firebase-database:9.8.0'' –

+0

但是,考虑到您发布的代码,您必须在你的构建依赖中也有'compile'c​​om.firebase:firebase-client-android:2.5.x''。这是传统的SDK。 –

+0

这将解释某些事情不起作用。感谢您的注意。但是,最新的'com.google.firebase:firebase-database:9.8.0'能否让我在商店中进行更改? –

相关问题