【发布时间】:2018-10-17 11:00:02
【问题描述】:
我想在 Firebase 中保存经过身份验证的用户的数据,有两种方法可以在我的应用中验证数据,然后将用户带到 MainActivity.Java。我想看看用户是否是第一次使用该应用程序,如果是,请将详细信息添加到 Firebase RealtimeDatabase 中的用户树中。
截至目前,在添加用户注释下方的 OnCreate 中添加代码后,应用程序没有崩溃或出现任何错误,但也没有命中 Firebase 数据库并更新它。
这是我在MainActivity.Java 的 OnCreate 部分的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
// Carousel
customCarouselView = findViewById(R.id.customCarouselView);
customCarouselView.setPageCount(sampleImages.length);
customCarouselView.setSlideInterval(4000);
customCarouselView.setImageListener(imageListener);
customCarouselView.setImageClickListener(new ImageClickListener() {
@Override
public void onClick(int position) {
// Toast.makeText(MainActivity.this, "Clicked item: " + position, Toast.LENGTH_SHORT).show();
redirectToHotDeals();
}
});
// -- Carousel
FirebaseAuth.getInstance().getCurrentUser();
if (FirebaseAuth.getInstance().getCurrentUser() != null) {
// User is signed in.
String name = FirebaseAuth.getInstance().getCurrentUser().getDisplayName();
String email = FirebaseAuth.getInstance().getCurrentUser().getEmail();
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
NavigationView navigationView = findViewById(R.id.nav_view);
View headerView = navigationView.getHeaderView(0);
TextView navUsername = headerView.findViewById(R.id.emailText);
TextView navUID = headerView.findViewById(R.id.uid);
navUID.setText("ID: " + uid.substring(0, 10));
navUsername.setText(email);
} else {
// No user is signed in.
redirectToLogin();
}
// Action Bar
ActionBar actionBar = getSupportActionBar();
actionBar.setTitle("Coupons List");
mRecyclerView = findViewById(R.id.recyclerView);
mRecyclerView.setHasFixedSize(true);
// Set Layout
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
// Send Query to Firebase Db
mFirebaseDatabase = FirebaseDatabase.getInstance();
mRef = mFirebaseDatabase.getReference("Data");
// Add User to DB or Update it
String name = FirebaseAuth.getInstance().getCurrentUser().getDisplayName();
String email = FirebaseAuth.getInstance().getCurrentUser().getEmail();
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
FirebaseUser fUser = FirebaseAuth.getInstance().getCurrentUser();
User user = new User(name, email);
mRef.child("User").child(fUser.getUid()).setValue(user);
DrawerLayout drawer = findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);
toggle.syncState();
NavigationView navigationView = findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
}
这是 Firebase 数据库的图像:我希望第一个孩子有 UID,后跟电子邮件和联系人作为其孩子。
这是我的User.Java:
public class User {
public String name, email, phone;
public User(String name, String email){
}
public User(String name, String email, String phone) {
this.name = name;
this.email = email;
this.phone = phone;
}
}
【问题讨论】:
-
您使用哪种注册方式?电子邮件/密码或电话?
-
电子邮件和谷歌
-
您是否还要添加firebase数据库的根结构?
User似乎不是Data孩子。 -
@Mohsen 我附上了上面的图片。数据库分为三个根结构(数据、目录和用户)。
-
@PradyumanDixit 不幸的是没有。我最终通过 Firebase Docs 解决了这个问题。
标签: android firebase firebase-realtime-database