[英]How to make simple user sign in with just username (firebase)
我在Java中完全是菜鳥(再次對我在這個領域的無知深感遺憾,我非常需要幫助),我需要使用Firebase制作一個應用程序。 這是我的注冊帳戶代碼(它是我從GitHub復制的所有代碼:P)我想使其僅用於使用用戶名進行注冊,使用電子郵件和密碼功能進行注冊以及將發送將來的驗證完全禁用,這也是我需要的使其進行其他活動,或者只是登錄用戶並顯示帖子供稿。 我希望有人可以幫助我:
公共類SignupActivity擴展BaseActivity {
private static final String TAG = "SignupActivity";
private Context mContext = SignupActivity.this;
//firebase
private FirebaseAuth mAuth;
private FirebaseAuth.AuthStateListener mAuthListener;
private FireBaseMethods fireBaseMethods;
private String email, handleName, password;
private EditText mHandleName, mEmail, mPassword;
private Button mButtonRegister;
private TextView loadingPleaseWait;
private ProgressBar mProgressBar;
//firebase Database
private FirebaseDatabase mFirebaseDatabase;
private DatabaseReference myRef;
boolean isExisted;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_signup);
fireBaseMethods = new FireBaseMethods(mContext);
Log.d(TAG, "onCreate: started");
initWidgets();
setupFirebaseAuth();
init();
}
@Override
protected void performOnCreate(Bundle state) {
}
private void init() {
mButtonRegister.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
handleName = mHandleName.getText().toString();
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(mEmail.getText().toString());
stringBuilder.append("");
email = stringBuilder.toString();
password = mPassword.getText().toString();
if (validate()) {
mProgressBar.setVisibility(View.VISIBLE);
loadingPleaseWait.setVisibility(View.VISIBLE);
fireBaseMethods.registerNewEmail(handleName, email, password);
}
}
});
}
/*
Initialize the activity widgets
*/
private void initWidgets() {
Log.d(TAG, "initWidgets: Initialize Widgets");
mHandleName = findViewById(R.id.handle_name);
mEmail = findViewById(R.id.input_email_signup);
mPassword = findViewById(R.id.input_password_signup);
mButtonRegister = findViewById(R.id.btn_signup);
mProgressBar = findViewById(R.id.progressBar);
loadingPleaseWait = findViewById(R.id.loading_signup);
mProgressBar.setVisibility(View.GONE);
loadingPleaseWait.setVisibility(View.GONE);
}
public boolean validate() {
boolean valid = true;
if (handleName.isEmpty() || handleName.length() < 3) {
mHandleName.setError("Внесете најмалку 3 карактери");
valid = false;
} else {
mHandleName.setError(null);
}
if (email.isEmpty()) {
mEmail.setError("Внесете валидна електронска пошта");
valid = false;
} else {
mEmail.setError(null);
}
if (password.isEmpty() || password.length() < 4) {
mPassword.setError("помеѓу 4 и 10 карактери");
valid = false;
} else {
mPassword.setError(null);
}
return valid;
}
/*
------------------------------------- Firebase ---------------------------------------------------
*/
/**
* Set up firebase auth object
*/
private void setupFirebaseAuth() {
Log.d(TAG, "setupFirebaseAuth: setting up firebase auth");
mAuth = FirebaseAuth.getInstance();
mFirebaseDatabase = FirebaseDatabase.getInstance();
myRef = mFirebaseDatabase.getReference();
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());
myRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
//1st check: make sure handle name is not ready in use
if (fireBaseMethods.checkIfHandleNameAlreadyExists(handleName, dataSnapshot)) {
mHandleName.setError("Тој ник веќе постои");
isExisted = true;
}
//add new user to the database
fireBaseMethods.addNewUser(handleName, email);
Toast.makeText(mContext, "Регистрирањето беше успешно.Ви пративме верификација на email", Toast.LENGTH_SHORT).show();
mAuth.signOut();
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
finish();
} else {
// User is signed out
Log.d(TAG, "onAuthStateChanged:signed_out");
}
// ...
}
};
}
@Override
public void onStart() {
super.onStart();
mAuth.addAuthStateListener(mAuthListener);
}
@Override
public void onStop() {
super.onStop();
if (mAuthListener != null) {
mAuth.removeAuthStateListener(mAuthListener);
}
}
}
我不建議僅使用用戶名進行注冊。 您失去了恢復帳戶的能力。
但是,您可以使用提供的用戶名,並在其末尾附加@fakeemail.com
,然后繼續使用email / password方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.