你有一个Android应用程序与Facebook和谷歌登录。我使用Firebase Auth和Realtime数据库,并想检查数据库中是否存在某人。如果用户首次使用Facebook或Google登录,我想在数据库中使用昵称创建新用户。
这是我的代码:
public void saveUserToDatabase(User newuser){
DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference("users");
mDatabase.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String userId = mAuth.getCurrentUser().getUid(); //Holt sich die ID von Firebase
/*
* Es wird geprüft ob das Element schon in der Database existiert
* */
if(dataSnapshot.hasChild(userId)){
Log.d(DATABSE_FIREBASE,"Benutzer ist bereits in der Datenbank angelegt!");
}else{
Log.d(DATABSE_FIREBASE,"Benutzer ist noch nicht in der Datenbank angelegt!");
// hier muss der nickname übergeben werden
mDatabase.child(userId).setValue(newuser);
Log.d(DATABSE_FIREBASE,"Ein neuer Benutzer mit der Email: " + newuser.getEmail() + " wurde in der Datenbank angelegt");
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.d(DATABSE_FIREBASE,"Fehler beim Zugriff auf die Datenbank...");
finish();
}
});
但是用户不会保存在数据库中。我该怎么办?
答案 0 :(得分:0)
使用共享首选项来存储该信息,如果应用程序仍处于安装状态,该信息将保持不变。
Context context = getActivity();
SharedPreferences sharedPref = context.getSharedPreferences(
getString(R.string.preference_file_key), Context.MODE_PRIVATE);
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE)
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString(getString(R.string.user_saved), "google|facebook");
editor.commit();
//Read from Shared Preferences
SharedPreferences sharedPref =getActivity().getPreferences(Context.MODE_PRIVATE);
String choice = sharedPref.getString(getString(R.string.user_saved), defaultValue);
if(choice.isEmpty()) Log.d("TAG","first time");