Android Firebase实时数据库&;认证
我最近在后端工作中采用了Firebase。使用Firebase,我希望将所有用户数据(如用户名、电话号码等)存储到Firebase的同一Android Firebase实时数据库&;认证,android,firebase,firebase-realtime-database,firebase-authentication,Android,Firebase,Firebase Realtime Database,Firebase Authentication,我最近在后端工作中采用了Firebase。使用Firebase,我希望将所有用户数据(如用户名、电话号码等)存储到Firebase的同一注册表活动中,而不仅仅是电子邮件和密码。我怎样才能做到这一点 我的注册表活动仅在安装时显示。当用户注册到我的应用程序时,我正在销毁该活动。因此,没有进一步的RegisterActivity实例 注册表活动-onCreate(): submitform(): authUser(): 我想在注册期间将姓名、电子邮件和电话保存在firebase数据库中,并在注册后销毁
注册表活动中,而不仅仅是电子邮件和密码。我怎样才能做到这一点
我的注册表活动
仅在安装时显示。当用户注册到我的应用程序时,我正在销毁该活动。因此,没有进一步的RegisterActivity
实例
注册表活动-onCreate()
:
submitform()
:
authUser()
:
我想在注册期间将姓名、电子邮件和电话保存在firebase数据库中,并在注册后销毁活动。我现在正在处理。问题是,登录(身份验证)和注册(注册)是两件不同的事情
我所做的是有两个独立的活动,签名。。。及注册(登记)
一旦用户注册(电子邮件和密码),他们将拥有Firebase已知的唯一用户ID
接下来,它们进入注册活动,因此当您在此活动中“上载”EditText中的所有数据时,您可以将它们上载到数据库中与用户ID匹配的节点(键…索引)。。。因此,数据库中的数据如下所示:
\mydatabase\users\[uniqueID]\
如果您将两个活动(身份验证和注册)合并为一个。。。由于有许多字段,“电子邮件、密码、姓名、电话号码等”都包含在一个活动中,因此下次他们在会话过期的情况下运行应用程序时,您仍然需要进行单独的仅登录活动。我认为做两个单独的活动要简单得多 我有一个活动,我只是尝试立即注册,不管用户是否存在,然后如果错误是由于电子邮件已经存在,我会登录用户,而不是注册他们
mAuth = FirebaseAuth.getInstance();
mAuth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (!task.isSuccessful()) {
if(task.getException() instanceof FirebaseAuthUserCollisionException) {
// login user
}
else {
// handle error
}
}
else {
// register user
}
}
mAuth=FirebaseAuth.getInstance();
mAuth.createUserWithEmailAndPassword(电子邮件,密码)
.addOnCompleteListener(这是新的OnCompleteListener(){
@凌驾
公共void onComplete(@NonNull任务){
如果(!task.issusccessful()){
if(FirebaseAuthUserCollisionException的task.getException()实例){
//登录用户
}
否则{
//处理错误
}
}
否则{
//注册用户
}
}
您可以添加用户配置文件信息和其他详细信息,如
用于更新配置文件
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
UserProfileChangeRequest profileUpdates = new UserProfileChangeRequest.Builder()
.setDisplayName("Jane Q. User")
.setPhotoUri(Uri.parse("https://example.com/jane-q-user/profile.jpg"))
.build();
user.updateProfile(profileUpdates)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Log.d(TAG, "User profile updated.");
}
}
});
FirebaseUser user=FirebaseAuth.getInstance().getCurrentUser();
UserProfileChangeRequest profileUpdates=新建UserProfileChangeRequest.Builder()
.setDisplayName(“Jane Q.User”)
.setPhotoUri(Uri.parse(“https://example.com/jane-q-user/profile.jpg"))
.build();
user.updateProfile(profileUpdates)
.addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
Log.d(标签“用户配置文件更新”);
}
}
});
有关管理用户详细信息的详细信息,请参阅此链接我们需要更多信息来帮助您。例如,向我们展示您在注册表活动
中的代码,并准确解释问题所在以及您遇到的问题。@XaverKapeller我已编辑了我的查询。请查看一下!!谢谢您想要添加类似于向经过身份验证的用户发送ile pic、电话号码或其他信息?我有两个单独的登录和注册活动。但在注册过程中,我希望将用户名、电子邮件和电话保存在数据库中,并将用户定向到MainActivity
。在您的问题中有三件事,即登录、注册和注册。因此,如果没有注册,用户将无法登录和注册注册是完全不同的事情。但我们或多或少都有相同的问题。我想如果@XaverKapeller看一看,他会有一个比我能给你的更好的答案……尽管我在我的帖子中描述了一些可能的解决方案。但是他们会无缘无故地填写所有这些注册表格,不是吗?他们会的所以你可能会感到困惑,认为他们的帐户已经被删除了。对我来说,这只是一个简单的电子邮件和密码登录,因此他们不需要在登录时再次填写一份巨大的注册表。
private void authUser() {
mFirebaseAuth.createUserWithEmailAndPassword(EMAIL, PASSWORD).addOnCompleteListener(RegisterActivity.this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (!task.isSuccessful()) {
AlertDialog.Builder builder = new AlertDialog.Builder(RegisterActivity.this);
builder.setMessage(task.getException().getMessage())
.setTitle("Error")
.setPositiveButton(android.R.string.ok, null);
AlertDialog dialog = builder.create();
dialog.show();
progressBar.setVisibility(View.GONE);
} else {
progressBar.setVisibility(View.GONE);
Intent intent = new Intent(RegisterActivity.this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
}
}
});
}
private void runAtInstallation() {
SharedPreferences pref = getSharedPreferences("ActivityPREF", Context.MODE_PRIVATE);
if (pref.getBoolean("activity_executed", false)) {
Intent act = new Intent(getApplicationContext(), MainActivity.class);
act.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
act.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(act);
finish();
} else {
SharedPreferences.Editor ed = pref.edit();
ed.putBoolean("activity_executed", true);
ed.commit();
}
}
mAuth = FirebaseAuth.getInstance();
mAuth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (!task.isSuccessful()) {
if(task.getException() instanceof FirebaseAuthUserCollisionException) {
// login user
}
else {
// handle error
}
}
else {
// register user
}
}
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
UserProfileChangeRequest profileUpdates = new UserProfileChangeRequest.Builder()
.setDisplayName("Jane Q. User")
.setPhotoUri(Uri.parse("https://example.com/jane-q-user/profile.jpg"))
.build();
user.updateProfile(profileUpdates)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Log.d(TAG, "User profile updated.");
}
}
});