Простой пользовательский аут [дубликат]

Вы можете использовать опцию «-add-modules = java.xml.bind» для добавления модуля привязки xml в среду выполнения JVM.

Например: «java --add-modules = java.xml.bind XmlTestClass "

8
задан Steve Lee 26 May 2016 в 17:28
поделиться

4 ответа

Вы правы, что вход пользователя / пароль не поддерживается изначально в Firebase Auth в данный момент.

Обходной путь, который вы могли бы использовать без использования пользовательского auth с другим бэкэнд, - это принять имена пользователей в ваш пользовательский интерфейс, но в основной логике добавьте «@yourowndomain.com» перед вызовом функций для регистрации или входа в систему по электронной почте.

Таким образом, вы будете использовать аутентификацию по электронной почте / паролю, отображение <username> в <username>@yourowndomain.com

3
ответ дан Alfonso Gomez Jordana Manas 24 August 2018 в 03:21
поделиться

Вы также можете использовать решение Альфонса. И где вам нужно настоящее электронное письмо, вы можете установить текстовое поле для электронной почты, когда пользователь регистрируется, и вы можете сохранить его в своей базе данных, и вы можете использовать его.

1
ответ дан Alper 24 August 2018 в 03:21
поделиться

Вы можете использовать sign in with custom token

Firebase дает вам полный контроль над аутентификацией, позволяя вам аутентифицировать пользователей или устройства с помощью защищенных JSON Web Tokens (JWT). Вы генерируете эти маркеры на своем сервере, передаете их обратно на клиентское устройство и затем используете их для аутентификации с помощью метода signInWithCustomToken().

  1. Вам необходимо сохранить пользователя и пароль в своей базе данных или rtdb или firestore
  2. Когда пользователь прикасается к кнопке входа в систему, клиент отправляет имя пользователя и пароль на ваш сервер. Если имя пользователя и пароль правильны, сгенерируйте собственный токен и отправьте его клиенту
  3. , тогда он может войти с помощью пользовательского токена с сервера, используя метод signInWithCustomToken()

Более подробную информацию можно прочитать в этой документации

0
ответ дан faruk 24 August 2018 в 03:21
поделиться

Добавление фиктивного домена в конец является своего рода исправлением и его следует избегать. Чтобы включить регистрацию имени пользователя, просто выполните следующие простые шаги.

Зарегистрироваться

Во время регистрации введите идентификатор пользователя, адрес электронной почты и пароль. Зарегистрируйте пользователя с обычной электронной почтой и паролем. При успешном его сохранении e-mail против user_id в отдельном узле (ветке).

mButtonSignUp.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(isValid()){
                mProgressBar.setVisibility(View.VISIBLE);
                final String userId = mEditTextUserId.getText().toString();
                final String emailId = mEditTextEmail.getText().toString() ;
                String password = mEditTextPassword.getText().toString() ;
                firebaseRef.createUser(emailId, password, new Firebase.ResultHandler() {
                    @Override
                    public void onSuccess() {
                       firebaseRef.child("user_ids").child(userId).setValue(emailId);
                       Toast.makeText(getBaseContext(),"You are successfully registered ",Toast.LENGTH_SHORT).show();
                       mProgressBar.setVisibility(View.GONE);
                    }

                    @Override
                    public void onError(FirebaseError firebaseError) {
                        mProgressBar.setVisibility(View.GONE);
                        Toast.makeText(getBaseContext(),firebaseError.toString(),Toast.LENGTH_SHORT).show();
                    }
                });

            }
        }
    });

База данных

Структура базы данных будет выглядеть так

Вход

Проверьте, введен ли пользователь в адрес электронной почты или пользователя. Если это идентификатор электронной почты, то непосредственно выполнить вход с ним, в противном случае получить идентификатор электронной почты, связанный с именем пользователя, и выполнить вход в систему.

    Button buttonLogIn = (Button)findViewById(R.id.button_login);
    buttonLogIn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {             

            mProgressBar.setVisibility(View.VISIBLE);
            String username = mEditTextEmail.getText().toString() ;
            final String password = mEditTextPassWord.getText().toString() ;

          //  Check if it is an email or not
             if(android.util.Patterns.EMAIL_ADDRESS.matcher(username).matches())                 {
                performLogin(username,password);
            }else{
              //get the emailId associated with the username      
        firebaseRef.child("user_ids").child(username)
              .addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {
                        if(dataSnapshot!=null){
                            String userId = dataSnapshot.getValue(String.class);
                            performLogin(userId,password);
                        }
                    }

                    @Override
                    public void onCancelled(FirebaseError firebaseError) {

                    }
                });
            }

        }
    });

private void performLogin(String emailId, String password) {
    firebaseRef.authWithPassword(emailId,password, new Firebase.AuthResultHandler() {
        @Override
        public void onAuthenticated(AuthData authData) {
            uid = authData.getUid() ;
            Toast.makeText(getBaseContext(), authData.toString(), Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onAuthenticationError(FirebaseError firebaseError) {
            Toast.makeText(getBaseContext(), firebaseError.toString(), Toast.LENGTH_SHORT).show();
        }
    });
}
7
ответ дан Saurabh Padwekar 24 August 2018 в 03:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: