簡體   English   中英

如何使僅用戶名的簡單用戶登錄(firebase)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM