首先,我单独尝试为我的应用程序制作一个简单的注册码,它起作用了:
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应用程序的最佳方法是什么?
非常感谢!
答案 0 :(得分:1)
日志和商店用户数据之间存在差异。您可以在使用创建用户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);
答案 1 :(得分:0)
对于你来说,我有一个最好的方法:
前:
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
}
});