使用 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 应用程序的最佳方式是什么?
非常感谢!
下面我有一个最好的方法:
- 第一步:你还是按照上面的代码插入用户信息。
- 同时(插入用户信息后)您必须使用 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);
首先,我尝试单独为我的应用程序制作一个简单的注册码并且成功了:
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 应用程序的最佳方式是什么?
非常感谢!
下面我有一个最好的方法:
- 第一步:你还是按照上面的代码插入用户信息。
- 同时(插入用户信息后)您必须使用 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);