Android 使用Firebase';使用较新的布局进行身份验证?
我已经设置了我的用户注册活动。访问用户数据以检查是否使用我的登录活动,这是一个简单但很好的做法。下面是我的注册活动。如果您能帮助我了解如何进行注册,或对我的注册活动进行任何可能的改进/更正,我们将不胜感激 SignupActivity.javaAndroid 使用Firebase';使用较新的布局进行身份验证?,android,firebase,firebase-authentication,Android,Firebase,Firebase Authentication,我已经设置了我的用户注册活动。访问用户数据以检查是否使用我的登录活动,这是一个简单但很好的做法。下面是我的注册活动。如果您能帮助我了解如何进行注册,或对我的注册活动进行任何可能的改进/更正,我们将不胜感激 SignupActivity.java package test.calendar; import android.app.ProgressDialog; import android.os.Bundle; import android.support.annotation.NonNull;
package test.calendar;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import butterknife.Bind;
import butterknife.ButterKnife;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
public class SignupActivity extends AppCompatActivity {
private static final String TAG = "SignupActivity";
//BIND VIEWS
@Bind(R.id.input_name) EditText _nameText;
@Bind(R.id.input_email) EditText _emailText;
@Bind(R.id.input_password) EditText _passwordText;
@Bind(R.id.btn_signup) Button _signupButton;
@Bind(R.id.link_login) TextView _loginLink;
// [START declare_auth]
private FirebaseAuth mAuth;
// [END declare_auth]
// [START declare_auth_listener]
private FirebaseAuth.AuthStateListener mAuthListener;
// [END declare_auth_listener]
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_signup);
ButterKnife.bind(this);
//BUTTERKNIFE
_signupButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
signup();
}
});
_loginLink.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Finish the registration screen and return to the Login activity
finish();
}
});
// [START initialize_auth]
mAuth = FirebaseAuth.getInstance();
// [END initialize_auth]
// [START auth_state_listener]
mAuthListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser user = firebaseAuth.getCurrentUser();
if (user != null) {
// User is signed in
Log.d(TAG, "onAuthStateChanged:signed_in:" + user.getUid());
} else {
// User is signed out
Log.d(TAG, "onAuthStateChanged:signed_out");
}
// [START_EXCLUDE]
//updateUI(user);
// [END_EXCLUDE]
}
};
// [END auth_state_listener]
}
// [START on_start_add_listener]
@Override
public void onStart() {
super.onStart();
mAuth.addAuthStateListener(mAuthListener);
}
// [END on_start_add_listener]
// [START on_stop_remove_listener]
@Override
public void onStop() {
super.onStop();
if (mAuthListener != null) {
mAuth.removeAuthStateListener(mAuthListener);
}
}
// [END on_stop_remove_listener]
public void signup() {
Log.d(TAG, "Signup");
if (!validate()) {
onSignupFailed();
return;
}
_signupButton.setEnabled(false);
final ProgressDialog progressDialog = new ProgressDialog(SignupActivity.this,
R.style.AppTheme_Dark_Dialog);
progressDialog.setIndeterminate(true);
progressDialog.setMessage("Creating Account...");
progressDialog.show();
String name = _nameText.getText().toString();
String email = _emailText.getText().toString();
String password = _passwordText.getText().toString();
// TODO: Implement your own signup logic here.
// [START sign_in_with_email]
mAuth.signInWithEmailAndPassword(email, password)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
Log.d(TAG, "signInWithEmail:onComplete:" + task.isSuccessful());
// If sign in fails, display a message to the user. If sign in succeeds
// the auth state listener will be notified and logic to handle the
// signed in user can be handled in the listener.
if (!task.isSuccessful()) {
Log.w(TAG, "signInWithEmail", task.getException());
Toast.makeText(getApplicationContext(), "Authentication failed.",
Toast.LENGTH_SHORT).show(); //TODO: Is this the right toast?
}
// [START_EXCLUDE]
progressDialog.dismiss();
// [END_EXCLUDE]
}
});
// [END sign_in_with_email]
}
// new android.os.Handler().postDelayed(
// new Runnable() {
// public void run() {
// // On complete call either onSignupSuccess or onSignupFailed
// // depending on success
// onSignupSuccess();
// // onSignupFailed();
// progressDialog.dismiss();
// }
// }, 3000);
// }
public void onSignupSuccess() {
_signupButton.setEnabled(true);
setResult(RESULT_OK, null);
finish();
}
public void onSignupFailed() {
Toast.makeText(getBaseContext(), "Login failed", Toast.LENGTH_LONG).show();
_signupButton.setEnabled(true);
}
public boolean validate() {
boolean valid = true;
String name = _nameText.getText().toString();
String email = _emailText.getText().toString();
String password = _passwordText.getText().toString();
if (name.isEmpty() || name.length() < 3) {
_nameText.setError("at least 3 characters");
valid = false;
} else {
_nameText.setError(null);
}
if (email.isEmpty() || !android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches()) {
_emailText.setError("enter a valid email address");
valid = false;
} else {
_emailText.setError(null);
}
if (password.isEmpty() || password.length() < 4 || password.length() > 10) {
_passwordText.setError("between 4 and 10 alphanumeric characters");
valid = false;
} else {
_passwordText.setError(null);
}
return valid;
}
package test.calendar;
导入android.app.ProgressDialog;
导入android.os.Bundle;
导入android.support.annotation.NonNull;
导入android.support.v7.app.AppActivity;
导入android.util.Log;
导入android.view.view;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.TextView;
导入android.widget.Toast;
进口毛刀。装订;
进口毛刀,毛刀;
导入com.google.android.gms.tasks.OnCompleteListener;
导入com.google.android.gms.tasks.Task;
导入com.google.firebase.auth.AuthResult;
导入com.google.firebase.auth.FirebaseAuth;
导入com.google.firebase.auth.FirebaseUser;
公共类注册活动扩展了AppCompatActivity{
私有静态最终字符串TAG=“SignupActivity”;
//绑定视图
@绑定(R.id.input\u name)编辑文本\u nameText;
@绑定(R.id.input\u email)编辑文本\u emailText;
@Bind(R.id.input_password)EditText_passwordText;
@绑定(R.id.btn_signup)按钮_signup按钮;
@绑定(R.id.link\u login)文本视图\u loginLink;
//[开始声明\u验证]
私人消防队;
//[结束声明授权]
//[启动声明\u验证\u侦听器]
私有FirebaseAuth.AuthStateListener mAuthListener;
//[结束声明\u验证\u侦听器]
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u注册);
把(这个)绑起来;
//毛刀
_signupButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
注册();
}
});
_loginLink.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//完成注册屏幕并返回登录活动
完成();
}
});
//[开始初始化\u验证]
mAuth=FirebaseAuth.getInstance();
//[结束初始化\u验证]
//[启动身份验证状态侦听器]
mAuthListener=new FirebaseAuth.AuthStateListener(){
@凌驾
AuthStateChanged上的公共void(@NonNull FirebaseAuth FirebaseAuth){
FirebaseUser=firebaseAuth.getCurrentUser();
如果(用户!=null){
//用户已登录
Log.d(标记为“+user.getUid()”);
}否则{
//用户已注销
Log.d(标记“onAuthStateChanged:signed_out”);
}
//[开始时不包括]
//updateUI(用户);
//[完]
}
};
//[结束身份验证状态侦听器]
}
//[启动\u启动\u添加\u侦听器]
@凌驾
public void onStart(){
super.onStart();
mAuth.addAuthStateListener(mAuthListener);
}
//[结束于\u开始\u添加\u侦听器]
//[启动\u停止\u删除\u侦听器]
@凌驾
公共void onStop(){
super.onStop();
if(mAuthListener!=null){
removeAuthStateListener(mAuthListener);
}
}
//[结束于\u停止\u删除\u侦听器]
公开无效注册(){
日志d(标签“注册”);
如果(!validate()){
onSignupFailed();
返回;
}
_signupButton.setEnabled(false);
final ProgressDialog ProgressDialog=新建ProgressDialog(SignupActivity.this,
R.style.AppTheme(黑色对话框);
progressDialog.setUndeterminate(true);
progressDialog.setMessage(“创建帐户…”);
progressDialog.show();
字符串名称=_nameText.getText().toString();
字符串email=_emailText.getText().toString();
字符串密码=_passwordText.getText().toString();
//TODO:在这里实现您自己的注册逻辑。
//[开始使用电子邮件登录]
mAuth.使用电子邮件和密码登录(电子邮件,密码)
.addOnCompleteListener(这是新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
Log.d(标记“signInWithEmail:onComplete:+task.isSuccessful()”);
//如果登录失败,则向用户显示消息。如果登录成功
//将通知身份验证状态侦听器,并使用逻辑来处理
//可以在侦听器中处理已登录用户。
如果(!task.issusccessful()){
w(标记“signInWithEmail”,task.getException());
Toast.makeText(getApplicationContext(),“身份验证失败”,
Toast.LENGTH_SHORT).show();//TODO:这是正确的吐司吗?
}
//[开始时不包括]
progressDialog.disclose();
//[完]
}
});
//[使用电子邮件结束登录]
}
//新的android.os.Handler().postDelayed(
//新的Runnable(){
//公开募捐{
////在完成onSignupSuccess或onSignupFailed调用时
////取决于成功
//onSignupSuccess();
////onSignupFailed();
//progressDialog.disclose();
// }
// }, 3000);
// }
public void onSignupSuccess(){
_signupButton.setEnabled(true);
setResult(RESULT_OK,null);
完成();
}
public void onSignupFailed(){
Toast.makeText(getBaseContext(),“登录失败”,Toast.LENGTH_LONG.show();
_signupButton.setEnabled(true);
}
公共布尔验证(){
布尔有效=真;
字符串名称=_nameText.getText().toString();
字符串email=_emailText.getText().toString();
字符串密码=\u passw