关闭时,请与Firebase一起登录该应用程序



我有一个应用程序,如果可以记录操作,则用户登录屏幕发送到活动。但是,每次我关闭应用程序时,App都会要求提供电子邮件和密码,我想保持登录Instagram或Facebook之类的登录。我可以那样做吗?而且我该怎么做,我是否必须更改signin活动中的代码或创建其他类以保存当前用户,我非常困惑。有我的firebase登录代码:

标志性;

public class SignInActivity extends AppCompatActivity  {
private EditText SignInMail, SignInPass;
private FirebaseAuth auth;
private Button SignInButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //Get Firebase auth instance
    auth = FirebaseAuth.getInstance();

    // set the view now
    setContentView(R.layout.activity_signin);
    SignInMail = (EditText) findViewById(R.id.SignInMail);
    SignInPass = (EditText) findViewById(R.id.SignInPass);
    SignInButton = (Button) findViewById(R.id.SignInButton);
    //Get Firebase auth instance
    auth = FirebaseAuth.getInstance();
    SignInButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String email = SignInMail.getText().toString();
            final String password = SignInPass.getText().toString();
            if (TextUtils.isEmpty(email)) {
                Toast.makeText(getApplicationContext(), "Mail", Toast.LENGTH_SHORT).show();
                return;
            }
            if (TextUtils.isEmpty(password)) {
                Toast.makeText(getApplicationContext(), "Password", Toast.LENGTH_SHORT).show();
                return;
            }
            //authenticate user
            auth.signInWithEmailAndPassword(email, password)
                    .addOnCompleteListener(SignInActivity.this, new OnCompleteListener<AuthResult>() {
                        @Override
                        public void onComplete(@NonNull Task<AuthResult> task) {
                            // If sign in fails, display a message to the user. If sign in succeeds
                            // the auth state listener will be notified and logic to handle the
                            // signed in user can be handled in the listener.
                           // progressBar.setVisibility(View.GONE);
                            if (!task.isSuccessful()) {
                                // there was an error
                                if (password.length() < 8) {
                                    Toast.makeText(getApplicationContext(),"pass min 8",Toast.LENGTH_SHORT).show();
                                } else {
                                    Toast.makeText(getApplicationContext(),"error",Toast.LENGTH_SHORT).show();
                                }
                            } else {
                                Intent intent = new Intent(SignInActivity.this, CampaignActivity.class);
                                startActivity(intent);
                                finish();
                            }
                        }
                    });
        }
    });
   }

public void NavigateSignUp(View v) {
    Intent inent = new Intent(this, SignupActivity.class);
    startActivity(inent);
}
public void NavigateForgetMyPassword(View v) {
    Intent inent = new Intent(this, ResetPasswordActivity.class);
    startActivity(inent);
}
}

在ongreate函数中,您需要添加此代码

FirebaseUser user=FirebaseAuth.getInstance().getCurrentUser();

此代码将在用户之前登录时获取当前登录的用户,否则将返回null。

检查此链接以获取进一步的理解。

获取当前签名的用户-Firebase Docs

我希望这能解决您的问题。如果您觉得这个答案是正确的,请接受答案。

当用户登录成功存储用户sharedPreference的登录类型时,当用户重新启动应用程序时,请再次检查该标志。如果共享偏好包含值,则只需将他带到主屏幕。

在每个登录中喜欢这样的这样的更新此值并检查

PreferencesManager.getInstance().getString(ANNONYMOUS_SIGNUP_DATE, "")) && (PreferencesManager.getInstance().getInt(LOGIN_TYPE, 0) == LOGIN_TYPE_ANNONYMOUS)

由于您对用户进行身份验证,因此您可以在登录活动之前创建一个飞溅屏幕,并编写以下代码:

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user != null){
   Intent i = new Intent(SplashActivity.this, HomeActivity.class);
   } else{
   Intent i = new Intent(SplashActivity.this, SignInActivity.class);
   }

在这里,您检查当前是否有登录用户,然后根据条件导航到正确的活动。

我建议您首先使用Splash屏幕并检查用户以下

登录。
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user != null) {
    // User is signed in
    // go to main page
} else {
    // No user is signed in
    // go to loging page
}

最新更新