Нужно сделать авто логин в приложении. Создано оно на 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 Разработке)
Выполняется это довольно просто)
Шаг 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()
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
У меня есть 3д вектор который хранит в себе Yaw, Pitch, Length
При отрисовке 3000 вершин телефон уже начинает тормозить
Как отображать разные штрихкоды в нескольких столбцах на одной PDF-странице, используя iText? Допустим, нужно отобразить 12 штрихкодов в трех...