使用 Firebase 注册和登录 android 应用程序的最佳方式是什么?

What's the best way to make registration and login to android app with Firebase?

首先,我尝试单独为我的应用程序制作一个简单的注册码并且成功了:

public class MainActivity extends AppCompatActivity {
private static final String FIREBASE_URL="https://***.firebaseio.com/";
private Firebase firebaseRef;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Firebase.setAndroidContext(this);
    firebaseRef = new Firebase(FIREBASE_URL);





    findViewById(R.id.button1).setOnClickListener(new View.OnClickListener() {


        @Override
        public void onClick(View view) {
            EditText fullname=(EditText)findViewById(R.id.full_name);
            EditText email=(EditText)findViewById(R.id.mail);
            EditText restname=(EditText)findViewById(R.id.rest_name);
            EditText phonenum=(EditText)findViewById(R.id.phone_num);
            EditText userpass=(EditText)findViewById(R.id.user_pass);
            EditText personalcode=(EditText)findViewById(R.id.personal_code);
            String full_name=fullname.getText().toString();
            String mail=email.getText().toString();
            String rest_name=restname.getText().toString();
            String phone_num=phonenum.getText().toString();
            String user_pass=userpass.getText().toString();
            String personal_code=personalcode.getText().toString();

           if(full_name!=""&&mail!=""&&rest_name!=""&&phone_num!=""&&user_pass!=""&&personal_code!="")
            {
               UserClass user= new UserClass(full_name,mail,rest_name,phone_num,user_pass,personal_code);
                firebaseRef.push().setValue(user);
                fullname.setText("");
                email.setText("");
                clubname.setText("");
                phonenum.setText("");
                userpass.setText("");
                personalcode.setText("");
                Toast.makeText(MainActivity.this,"Account Inserted",Toast.LENGTH_LONG).show();
            }

        }
    });

}

正如我所说,它运作良好,信息也很好地插入到 Firebase 数据库中。

但是我发现登录部分有问题。我找不到任何说明如何使用我在上面写的注册码插入到 Firebase 数据库的信息进行登录的指南。

你建议我做什么?推荐我写注册码的方式吗? 如果是 - 我应该如何编码登录页面? 如果否 - 使用 Firebase 注册或登录 android 应用程序的最佳方式是什么?

非常感谢!

下面我有一个最好的方法:

  1. 第一步:你还是按照上面的代码插入用户信息。
  2. 同时(插入用户信息后)您必须使用 firebaseRef.createUser(..) 传递用户名和密码以将您的用户帐户注册到 firebase 帐户管理

例如:

firebaseRef.createUser("username or email here", "user password here", new Firebase.ValueResultHandler<Map<String, Object>>() {
    @Override
    public void onSuccess(Map<String, Object> result) {
        System.out.println("Successfully created user account with uid: " + result.get("uid"));
       //You can push(...) your user informaton here (which same username or email as primerykey)
    }
    @Override
    public void onError(FirebaseError firebaseError) {
        // there was an error
    }
});

然后您可以使用以下代码帮助用户登录:

firebaseRef.authWithPassword("username or email registered", "registerd password", new Firebase.AuthResultHandler() {
    @Override
    public void onAuthenticated(AuthData authData) {
        System.out.println("User ID: " + authData.getUid() + ", Provider: " + authData.getProvider());
    }
    @Override
    public void onAuthenticationError(FirebaseError firebaseError) {
        // there was an error
    }
});

记录和存储用户数据是有区别的。使用创建用户Firebase的方法可以保存用户数据。

ref.createUser(email, pass, new Firebase.ValueResultHandler<Map<String, Object>>() {
     @Override
     public void onSuccess(Map<String, Object> result) {
         System.out.println("Successfully created user account with uid: " + result.get("uid"));


        // read data ...

        // save user data
        Map<String, String> map = new HashMap<String, String>();
        map.put("provider", authData.getProvider());
        map.put("genre", genre);
        map.put("birthDate", birthDate);
        map.put("name", name);

        ref.child("users").child(result.get("uid")).setValue(map);
     }

     @Override
     public void onError(FirebaseError firebaseError) {
         // there was an error
     }
});

然后您可以使用以下功能登录 Firebase。

ref.authWithPassword(email, pass, authResultHandler);