android - Firebase 登录并使用用户名注册

标签 android firebase firebase-authentication

我目前正在使用 AndroidHive 的 tutorial为了学习如何使用 Firebase,我现在开始很好地理解这些方法和文档——我意识到 Firebase 提供了一种带有电子邮件和密码的注册/登录方法,并且这条信息没有存储在我们的数据库中。

我想实现一个系统,当他们注册时,他们会提供他们的电子邮件、密码和用户名以及一些其他数据,所有这些都会保存到数据库中。这样用户就可以使用他们的电子邮件或用户名登录。我在堆栈上找到了这篇文章,显然是 answer对于我要问的这个问题 - 但是,我不完全理解这个以及它如何与我下面的代码链接

auth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(SignupActivity.this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
    Toast.makeText(SignupActivity.this, "createUserWithEmail:onComplete:" + task.isSuccessful(), Toast.LENGTH_SHORT).show();
    progressBar.setVisibility(View.GONE);

    if (!task.isSuccessful()) {
        Toast.makeText(SignupActivity.this, "Authentication failed." + task.getException(),
            Toast.LENGTH_SHORT).show();
    } else {
        startActivity(new Intent(SignupActivity.this, MainActivity.class));
        finish();
    }
}
});

非常感谢任何帮助,谢谢

最佳答案

试试这个:

auth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(SignupActivity.this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
    Toast.makeText(SignupActivity.this, "createUserWithEmail:onComplete:" + task.isSuccessful(), Toast.LENGTH_SHORT).show();
    progressBar.setVisibility(View.GONE);
    generateUser(email, password)

    if (!task.isSuccessful()) {
        Toast.makeText(SignupActivity.this, "Authentication failed." + task.getException(),
            Toast.LENGTH_SHORT).show();
    } else {
        startActivity(new Intent(SignupActivity.this, MainActivity.class));
        finish();
    }
}
});

这是上面调用的方法。

public void generateUser(String username, String password)
{

FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference users = database.getReference("users"); //users is a node in your Firebase Database.
User user = new User(username, password); //ObjectClass for Users
users.push().setValue(user);

}

还有: 用户类

   public class User {

    String username;
    String password;

    public User() {
    //Empty Constructor For Firebase
    }


public User(String username, String password)
        {
        this.username = username; //Parameterized for Program-Inhouse objects.
        this.password = password;
        }

    //Getters and Setters
    public String getUsername()
    {
    return username;
    }
    public void setUsername(String username)
    {
    this.username = username;
    }
    public String getPassword()
    {
    return password;
    }
    public void setPassword(String password)
    {
    this.password = password;
    }
}

关于android - Firebase 登录并使用用户名注册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38423290/

相关文章:

android - 如何将设备上运行的 android 应用程序连接到本地 Web 应用程序?

android - Android 中的 Web 服务 SOAP

android - Apple/Android 第三方商家服务

ios - Firestore 不返回查询 Swift 5 Xcode 11.3

android - 来自 BigQuery 的 Data Studio 中的 Firebase 日内事件

android - 如何让 Android Studio 停止生成 local.properties?

FirebaseUI for Web — 身份验证 - 如何重新进行身份验证?

java - Firebase 电话身份验证替换了 userimage 和 Displayname

android - 仅允许我的应用程序的用户将值从 false 更改为 true 的最安全的安全规则是什么?

ios - Swift Firebase - 如何向 viewDidLoad 添加观察者,在 viewDidDisappear 中删除它,然后在 viewWillAppear 中再次读取它?