为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Android Studio 中使用 Firebase 自动登录?

如何在 Android Studio 中使用 Firebase 自动登录?

四季花海 2021-11-03 16:54:11
我正在为会员和非会员创建一个餐厅应用程序。主页由 3 个按钮组成 - 菜单、登录和注册。我想让非会员在点击菜单按钮时自动登录(默认电话 ID)进入系统,会员每次只需登录或注册。我尝试使用 sharedPreferences(默认 phoneId)进行非会员自动登录,但我不知道默认 phoneId 是否可以与 firebase 同步。我想跟踪非会员的交易订单。有没有办法只让默认的phoneId有自动登录功能?p/s 我只是一个初学者,正在为我的项目做这个应用程序。请帮助谢谢。主活动.javapublic class MainActivity extends AppCompatActivity {Button btnSignIn, btnSignUp, btnMenu;public AppPreferences appPreference;@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    appPreference = new AppPreferences(this);    btnMenu = (Button)findViewById(R.id.btnMenu);    btnSignUp = (Button)findViewById(R.id.btnSignUp);    btnSignIn = (Button)findViewById(R.id.btnSignIn);    btnMenu.setOnClickListener(new View.OnClickListener() {        @Override        public void onClick(View view) {            Intent home = new Intent(MainActivity.this, Home.class);            //Here save user info to preferences            appPreference.setUserPhoneId(Constant.DEFAULT_PHONE_ID);            appPreference.setUserPassword(Constant.DEFAULT_PASSWORD);            startActivity(home);        }    });    btnSignUp.setOnClickListener(new View.OnClickListener() {        @Override        public void onClick(View view) {            Intent signUp = new Intent(MainActivity.this, SignUp.class);            startActivity(signUp);        }    });    btnSignIn.setOnClickListener(new View.OnClickListener() {        @Override        public void onClick(View view) {            Intent signIn = new Intent(MainActivity.this, SignIn.class);            startActivity(signIn);        }    });}} 
查看完整描述

2 回答

?
慕仙森

TA贡献1827条经验 获得超8个赞

整个方法相当有问题,因为有一个匿名身份验证提供程序,它应该用于那些“非成员”(也可以与安全规则一起使用)。存储身份验证的状态Preferences很容易出错,因为它没有考虑身份验证的实际状态 -access denied一旦令牌过期,这将导致。

我也看到了你之前的问题,但整个业务逻辑是有缺陷的。

...最好参见AccountManager,了解如何在 Android 上正确存储帐户。


查看完整回答
反对 回复 2021-11-03
?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

你需要做这样的事情,


MainActivity-> SignIn-> 如果登录成功 -> 下次启动应用程序时登陆HomeActivity


尝试这个,


1.) 首先,您定义一个新的boolean首选项键,USER_LOGGED_IN并在您的类中创建setUserLoggedIn()和getUserLoggedIn()方法AppPreferences如下。


    private static final boolean USER_LOGGED_IN = false;


     public static void setUserLoggedIn(boolean value) {

                String TAG = "AppPref:setUserLoggedIn";

        try{

            editor.putBoolean(USER_LOGGED_IN, value);

            editor.commit();

        } catch (Exception e) {

            Log.e(TAG, String.valueOf(e));

        }

     }


    public static boolean getUserLoggedIn() {

        return sharedPreferences.getBoolean(USER_LOGGED_IN, false);       

    }

2.) 然后,在您的SignIn活动中,如果登录成功,将 UserLoggedIn 设置为true您的sharedPreferences.


3.) 最后,在你的MainActivity,override onResume()方法如下,


@Override

protected void onResume() {

    super.onResume();

    boolean userLoggedIn = AppPreferences.getUserLoggedIn();


    if(userLoggedIn){

        MainActivity.this.startActivity(new Intent(getApplicationContext(), Home.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK));

    }

}

试试这个,让我知道你的反馈。谢谢!


查看完整回答
反对 回复 2021-11-03
  • 2 回答
  • 0 关注
  • 283 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信