Как сделать так, чтобы простой пользователь входил только под именем пользователя (firebase) - PullRequest
0 голосов
/ 09 сентября 2018

Я полностью noob (опять же извините за мое невежество в этой области, мне действительно нужна помощь) в Java, и мне нужно сделать приложение с firebase. Вот мой код учетной записи регистрации (это весь код, который я скопировал с GitHub: P). Я хочу сделать это просто для регистрации с именем пользователя, регистрации с помощью функции электронной почты и пароля и подтверждения отправки в будущем, чтобы полностью отключить, также мне нужно чтобы сделать это, чтобы перейти к другой деятельности или просто войти в систему пользователя и показать ленту сообщений. Я надеюсь, что кто-то может мне помочь:

открытый класс RegistrationActivity расширяет 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);
    }
}

}

1 Ответ

0 голосов
/ 09 сентября 2018

Я НЕ советую возможность регистрироваться ТОЛЬКО под именем пользователя.Вы теряете возможность восстановить учетную запись.

Однако вы можете взять предоставленное вам имя пользователя, добавить @fakeemail.com к его концу и продолжить использовать метод электронной почты / пароля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...