Авто логин в приложении android

89
29 апреля 2021, 17:10

Нужно сделать авто логин в приложении. Создано оно на Android Studio и авторизация на Firebase.

Вот код MainActivity:


public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private FirebaseAuth mAuth;
    private FirebaseAuth.AuthStateListener mAuthListener;
    private EditText et_email;
    private EditText et_password;
    private AdView mAdView;
    private TextView tname;
    private TextView temail;
    private static final String TAG = "MainActivity";
    //GoogleApiClient mGoogleSignInClient;
    //private static final String TAG = "SignInActivity";
    //private static final int RC_SIGN_IN = 9001;
    //private TextView mDetailTextView;
    //private TextView mStatusTextView;
    //private GoogleSignInOptions gso;
    //private GoogleSignInClient mGoogleSignInClient;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mAuth = FirebaseAuth.getInstance();
        super.onStart();

        // Check if user is signed in (non-null) and update UI accordingly.
        FirebaseUser currentUser = mAuth.getCurrentUser();

        mAuthListener = new FirebaseAuth.AuthStateListener() {
            @Override
            public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
                FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
                if (user != null) {
                    String name = user.getDisplayName();
                    String email = user.getEmail();
                    boolean emailVerified = user.isEmailVerified();
                    // The user's ID, unique to the Firebase project. Do NOT use this value to
                    // authenticate with your backend server, if you have one. Use
                    // FirebaseUser.getIdToken() instead.
                    String uid = user.getUid();
                } else {
                }
            }
        };

        et_email = (EditText) findViewById(R.id.et_email);
        et_password = (EditText) findViewById(R.id.et_password);
        tname = (TextView) findViewById(R.id.tname);
        temail = (TextView) findViewById(R.id.temail);
        findViewById(R.id.BVoiti).setOnClickListener(this);
        findViewById(R.id.change_email).setOnClickListener(this);
        findViewById(R.id.change_password).setOnClickListener(this);
        findViewById(R.id.btn_vk).setOnClickListener(this);
        findViewById(R.id.BReg).setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        if (view.getId() == R.id.change_password) {
            changePasswoord();
        }else if(view.getId() == R.id.BVoiti){
            signing(et_email.getText().toString(),et_password.getText().toString());
            et_password.getText().clear();
            et_email.getText().clear();
        }else if (view.getId() == R.id.BReg){
            Intent intent1 = new Intent(MainActivity.this, RegActivity.class);
            startActivity(intent1);
        }

    }

    public void changePasswoord(){
        Intent intent = new Intent(MainActivity.this, ChangePassword.class);
        startActivity(intent);
    }

    public void signing(String email, String password){
        mAuth.signInWithEmailAndPassword(email,password).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {
                if(task.isSuccessful()) {
                    if(mAuth.getCurrentUser().isEmailVerified()){
                        Toast.makeText(MainActivity.this, "Успешный вход",Toast.LENGTH_LONG).show();
                        Intent intent = new Intent(MainActivity.this,MainScreenActivity.class);
                        startActivity(intent);
                    }else{
                        Toast.makeText(MainActivity.this, "Верифицируйте ваш аккаунт",Toast.LENGTH_LONG).show();
                    }
                }else{
                    Toast.makeText(MainActivity.this, "Авторизация провалена", Toast.LENGTH_SHORT).show();
                }
            }
        });
    }



}

Если это не тот код который нужен для решения задачи пишите. Я новичёк в Android Разработке)

Answer 1

Выполняется это довольно просто)

Шаг 1. Проверить, что пользователь уже авторизировался. Для этого в onStart активити авторизации, проверяете:

auth.currentUser != null && SharedPreference.contain(this, USER_ID)

Шаг 2 А. Если условие возвращает true - пользователь уже авторизирован. Значит можно пропустить экран авторизации и перейти к MainActivity. (Полагаю, с объектом auth вы уже знакомы, USER_ID - это id последнего авторизированного пользователя.)

Шаг 2 Б. Если условие вернуло false, пользователь либо разлогинился, либо никогда еще не логинился. Тогда, вы выполняете стандартную процедуру авторизации, а по ее завершению сохраняете userId во внутреннюю память телефона с помощью SharedPreference.

Шаг 3. Когда пользователь нажмет logout, вы должны позаботиться об удалении из памяти его userId.

На всякий случай объект auth можно получить из FirebaseAuth.getInstance()

READ ALSO
Yaw Pitch Length преобразовать в XYZ

Yaw Pitch Length преобразовать в XYZ

У меня есть 3д вектор который хранит в себе Yaw, Pitch, Length

262
Почему у меня тормозит отрисовка большого количества объектов opengl на телефоне?

Почему у меня тормозит отрисовка большого количества объектов opengl на телефоне?

При отрисовке 3000 вершин телефон уже начинает тормозить

106
Как отображать штрихкоды в матричной структуре?

Как отображать штрихкоды в матричной структуре?

Как отображать разные штрихкоды в нескольких столбцах на одной PDF-странице, используя iText? Допустим, нужно отобразить 12 штрихкодов в трех...

77