2016-11-14 76 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'能否讓我在商店中進行更改? –

相關問題