【问题标题】:Why does Android Firebase skip authentication activities为什么 Android Firebase 会跳过身份验证活动
【发布时间】:2018-05-07 05:38:35
【问题描述】:

我正在我的新 Android 应用中实施 Firebase 电子邮件/密码身份验证。

该应用程序在大多数情况下运行良好,除了当用户单击登录或注册这两个按钮之一时,该应用程序会跳过假定的活动,登录或注册,并直接进入 mainActivity。

这就是我编写打开下一个活动的意图的方式:-

mRegister.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(ChooseLogin.this, RegistrationActivity.class);
                startActivity(intent);
                finish();
                return;}});

我在调试中发现了两个可能相关的错误:-

W/zygote64:由于无法识别而跳过重复类检查 类加载器 W/DynamiteModule:本地模块描述符类 com.google.firebase.auth 未找到。

还有:-

W/DynamiteModule:本地模块描述符类 com.google.android.gms.crash 未找到。

根据我对类似问题的回答:

  • 检查说我已连接的 Firebase 助手。

  • 在 Firebase 控制台中检查我已启用电子邮件/密码登录

  • 在我的设备和模拟器上检查过,两者的行为都一样

  • 检查我使用的是最新的 'com.google.firebase:firebase-auth:11.6.0'

  • 检查 google play 服务是否正常 'classpath 'com.google.gms:google-services:3.1.0'

  • 甚至添加到清单请求中以获取 Internet 权限

  • 实现了 firebases crashylytics,但它没有捕捉到这一点

  • 重新添加 google.services.json 文件,然后构建/重建项目

EDIT(根据要求注册Activity和logcat):

registrationActivity 的 onCreate :

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);

        mAuth = FirebaseAuth.getInstance();

        fireBaseStateListener = new FirebaseAuth.AuthStateListener() {
            @Override
            public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
                final FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
                Intent intent = new Intent(RegistrationActivity.this, MainActivity.class);
                startActivity(intent);
                    finish();
                    return;}};

   @Override
    protected void onStart() {
        super.onStart();
        mAuth.addAuthStateListener(fireBaseStateListener);
    }

日志猫:

11-23 11:58:59.652 12880-12880/com.sanruza.alpak.tinderlike I/zygote64: Late-enabling -Xcheck:jni
11-23 11:59:00.016 12880-12880/com.sanruza.alpak.tinderlike W/zygote64: Skipping duplicate class check due to unrecognized classloader
11-23 11:59:00.020 12880-12880/com.sanruza.alpak.tinderlike W/DynamiteModule: Local module descriptor class for com.google.firebase.auth not found.
11-23 11:59:00.027 12880-12880/com.sanruza.alpak.tinderlike W/DynamiteModule: Local module descriptor class for com.google.firebase.auth not found.
11-23 11:59:00.048 12880-12880/com.sanruza.alpak.tinderlike I/BiChannelGoogleApi: [FirebaseAuth: ] No Fallback module; NOT setting up for lazy initialization
11-23 11:59:00.091 12880-12914/com.sanruza.alpak.tinderlike W/DynamiteModule: Local module descriptor class for com.google.firebase.auth not found.
11-23 11:59:00.104 12880-12914/com.sanruza.alpak.tinderlike I/FirebaseAuth: [FirebaseAuth:] Loading module via FirebaseOptions.
11-23 11:59:00.104 12880-12914/com.sanruza.alpak.tinderlike I/FirebaseAuth: [FirebaseAuth:] Preparing to create service connection to gms implementation
11-23 11:59:00.118 12880-12917/com.sanruza.alpak.tinderlike I/DynamiteModule: Considering local module com.google.android.gms.flags:2 and remote module com.google.android.gms.flags:0
11-23 11:59:00.118 12880-12917/com.sanruza.alpak.tinderlike I/DynamiteModule: Selected local version of com.google.android.gms.flags
11-23 11:59:00.148 12880-12917/com.sanruza.alpak.tinderlike W/DynamiteModule: Local module descriptor class for com.google.android.gms.crash not found.
11-23 11:59:00.156 12880-12917/com.sanruza.alpak.tinderlike I/DynamiteModule: Considering local module com.google.android.gms.crash:0 and remote module com.google.android.gms.crash:10
11-23 11:59:00.157 12880-12917/com.sanruza.alpak.tinderlike I/DynamiteModule: Selected remote version of com.google.android.gms.crash, version >= 10
11-23 11:59:00.162 12880-12880/com.sanruza.alpak.tinderlike V/FA: Cancelling job. JobID: -385218149
11-23 11:59:00.171 12880-12880/com.sanruza.alpak.tinderlike V/FA: Registered activity lifecycle callback
11-23 11:59:00.172 12880-12880/com.sanruza.alpak.tinderlike I/FirebaseInitProvider: FirebaseApp initialization successful
11-23 11:59:00.205 12880-12921/com.sanruza.alpak.tinderlike V/FA: Collection enabled

【问题讨论】:

  • 删除return
  • 您的应用程序崩溃了吗?并可能显示完整的 logcat 以查看那里的问题
  • 你能把RegistrationActivity的onCreate代码贴在这里
  • @FarisKapo 更改您的布局似乎您调用登录布局而不是注册布局
  • @FarisKapo 你检查你的布局名称了吗?

标签: java android firebase firebase-authentication


【解决方案1】:

是的,它直接进入 mainactivity,正因为如此:

mAuth = FirebaseAuth.getInstance();

    fireBaseStateListener = new FirebaseAuth.AuthStateListener() {
        @Override
        public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
            final FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
            Intent intent = new Intent(RegistrationActivity.this, MainActivity.class);
            startActivity(intent);
                finish();
                return;}};

 @Override
   protected void onStart() {
      super.onStart();
      mAuth.addAuthStateListener(fireBaseStateListener);
   }

onStart 完成:mAuth.addAuthStateListener(fireBaseStateListener);

所以它正在进入监听器,因为你的代码中有这个:

Intent intent = new Intent(RegistrationActivity.this, MainActivity.class);
startActivty(intent);

它直接进入 MainActivity.class

这样做:

final FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
      if(user!=null){ //if user is signed in
        Intent intent = new Intent(RegistrationActivity.this, MainActivity.class);
        startActivity(intent);
            finish();
        }
         else{
               Log.i("sign in", not signed in);
            }};

【讨论】:

  • 非常感谢您的回答。在这个问题上,我终于感觉少了一点损失。但是您能否详细说明我到底需要更改什么,因为我只知道那里有问题而不是如何解决它。如果我要求太多,我深表歉意,再次感谢您的时间。
  • 是的,我编辑了它,它现在应该检查用户是否已登录,然后转到 mainActivity 跳过注册活动,如果没有,它会留在注册活动中
  • 抱歉,我花了一些时间来实现它,但它终于奏效了。万分感谢。非常感谢。
  • 没问题,愉快的编码
【解决方案2】:

你实现sharedpreference了吗? 如果您为user session 实现此功能,可能是由于sharedpreference。 如果你没有实施 然后尝试从RegistrationActivity 复制您的代码,然后创建新的Activity 并粘贴到那里。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-30
    • 1970-01-01
    • 2021-09-27
    • 2016-04-22
    • 2017-11-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多