当前位置: 首页 > 知识库问答 >
问题:

FireBase身份验证登录/注册异常

范霄
2023-03-14

大家好,我对FireBase创建用户和注册用户有问题。下面是注册和登录的代码。我得到空指针异常,无法理解原因。。初始化完成了,但经过了这么多天的努力,还是弄不明白。

注册:

public class RegisterActivity extends Activity {

        private EditText mDisName;
        private EditText mMail;
        private EditText mPass;
        private Button reg;
        private TextView error;
        private FirebaseAuth regAuth;
        private ProgressBar myprog;
        private int Progress =0;
        private Handler myHandler= new Handler();
        private DatabaseReference databaseRef;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_register);
            mDisName =(EditText) findViewById(R.id.reg_name);
            mMail = (EditText) findViewById(R.id.reg_mail);
            mPass = (EditText) findViewById(R.id.reg_password);
            reg = (Button) findViewById(R.id.reg_button);
            error = (TextView) findViewById(R.id.textView4);
            myprog = (ProgressBar) findViewById(R.id.progressbar);
            regAuth = FirebaseAuth.getInstance();
            databaseRef = FirebaseDatabase.getInstance().getReference().child("UserNames :");

            reg.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    String disName = mDisName.getText().toString();
                    String dmail = mMail.getText().toString();
                    String pass = mPass.getText().toString();
                    new Thread(new Runnable() {
                        @Override
                        public void run() {
                            while(Progress < 100) {
                                Progress++;
                                android.os.SystemClock.sleep(30);
                                myHandler.post(new Runnable() {
                                    @Override
                                    public void run() {
                                        myprog.setProgress(Progress);
                                    }
                                });
                            }

                        }
                    }).start();
                    registerUser(disName,dmail,pass);
                }
            });
        }



        public void registerUser(final String displayName,String email, String password){
            databaseRef.push().setValue(displayName);
         -->Error line <--   regAuth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {
                        if (task.isSuccessful()) {
                            Intent loginIntent = new Intent(RegisterActivity.this, login.class);
                            startActivity(loginIntent);
                            Spannable errormes = new SpannableString("\"Registration Successful As User :\"" + displayName);
                            errormes.setSpan(new ForegroundColorSpan(Color.GREEN), 0, errormes.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
                            error.setText(errormes);
                            //finish();
                        } else {
                            Toast.makeText(RegisterActivity.this, "Error with registration!", Toast.LENGTH_LONG).show();
                            error.setText("     Error 110! User already exists! \n    Please provide different username!");
                            try {
                                throw task.getException();
                            } catch (FirebaseAuthWeakPasswordException e) {
                                Log.e("Exception", e.getMessage());
                            } catch (FirebaseAuthInvalidCredentialsException e) {
                                Log.e("Exception", e.getMessage());
                            } catch (FirebaseAuthUserCollisionException e) {
                                Log.e("Exception", e.getMessage());
                            } catch (Exception e) {
                                Log.e("Exception", e.getMessage());
                            }
                        }
                    }
                });

        }

    }

正在发布注册活动的日志错误:

java.lang.com.google.android.gms.internal.zzdvv.zzb(未知来源)在com.google.android.gms.internal.zzdwc.zza(未知来源)在com.google.firebase.auth.Firebaseuth.create用户在com.package.myapp.注册ctivity.register用户(注册A<-plhd--7/>)在com.package.myapp.注册活动$1.on点击(注册ctivity.java:79)在android.view.View.perform点击(View.java:4438)在android.view.查看$PerformClick.run(View.java:18422)在android.os.Handler.handle回调(Handler.java:733)在android. os.在android. os.在android. app.ActivityThread. main(ActivityThread. java: 5017)在java. lang.反射。方法。方法调用(方法. java: 515)在com. android. interal. os。ZygoteInit$method odAndArgsCaller. run(ZygoteInit. java: 779)在com. android. interal. os。在dalvik. system上的ZygoteInit. main(ZygoteInit. java: 595)。NativeStart. main(本机方法)

登录时也会发生同样的情况(注册用户后,在站点上使用firebase plus按钮)

登录活动示例代码:

java.lang.IllegalStateExcture:无法在android.view.执行活动的方法查看$1.on单击(View.java:3823)android.view.View.perform单击(View.java:4438)android.view.查看$PerformClick.run(View.java:18422)android.os.Handler.handle回调(Handler.java:733)android.os.Handler.dispatch消息(Handler.java:95)在android.os.Looper.loop(Looper.java:136)在android.app.ActivityThread. main(ActivityThread. java: 5017)在java. lang.反射。方法。方法调用(方法. java: 515)在com. android. interal. os。ZygoteInit$method odAndArgsCaller. run(ZygoteInit. java: 779)在com. android. interal. os。在dalvik. system上的ZygoteInit. main(ZygoteInit. java: 595)。NativeStart. main(本地方法)引起:java. lang.反射。在java. lang.反射率。方法。在android. view.点击android. view(View. java: 3818)。点击(View. java: 4438)

还提供以下登录java类:

public class login extends Activity {

    private EditText user;
    private EditText password;
    private TextView registerView;
    private TextView loginView;
    private Spannable errormes;
    private FirebaseAuth mAuth;
    private Button login;
    private CallbackManager callbackManager ;
    private ImageView loginIma;
    private ImageView image;
    private ImageView image2;
    private CardView cardView;

    private GoogleSignInOptions gso;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        user = (EditText) findViewById(R.id.username);
        image=(ImageView)findViewById(R.id.imageView4);
        image2=(ImageView)findViewById(R.id.imageView3);
        errormes = new SpannableString("Error 100! User doesnt exists! \n Please register first");
        userdatabase = FirebaseDatabase.getInstance().getReference().child("Users :");
        mAuth = FirebaseAuth.getInstance();
        registerView = (TextView) findViewById(R.id.registerView);
        password = (EditText)findViewById(R.id.passwordView);
        callbackManager = CallbackManager.Factory.create();
        boolean loggedIn = AccessToken.getCurrentAccessToken() == null;
        cardView=(CardView)findViewById(R.id.cardView);
        loginView = (TextView) findViewById(R.id.loginView);

        callbackManager = CallbackManager.Factory.create();

        LoginManager.getInstance().registerCallback(callbackManager,
                new FacebookCallback<LoginResult>() {
                    @Override
                    public void onSuccess(LoginResult loginResult) {
                        Intent account = new Intent(login.this,menu_activity.class);
                        startActivity(account);
                    }

                    @Override
                    public void onCancel() {
                        Intent main = new Intent(login.this,login.class);
                        startActivity(main);
                        finish();

                    }

                    @Override
                    public void onError(FacebookException exception) {
                        Toast.makeText(login.this, "Error 500! Facebook login failed!", Toast.LENGTH_SHORT).show();
                    }
                });

    }





    private int size = 0;
    private HashMap<String, String> users = new HashMap<String, String>();

    private DatabaseReference userdatabase;

    private FirebaseAuth.AuthStateListener mAuthListener;


    public void setSize(int newsize) {
        this.size = newsize;
    }

    public void login(View view) {
        EditText user = (EditText) findViewById(R.id.username);
        EditText password = (EditText) findViewById(R.id.passwordView);
        Spannable errormes = new SpannableString("Error 100! User doesnt exists! \n Please register first");
        errormes.setSpan(new ForegroundColorSpan(Color.RED), 0, errormes.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        Intent userAcc = new Intent(login.this,menu_activity.class);
        startActivity(userAcc);

    **//error line** mAuth.signInWithEmailAndPassword(user.getText().toString(), password.getText().toString())
                        .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                            @Override
                            public void onComplete(@NonNull Task<AuthResult> task) {
                                if (task.isSuccessful()) {
                                    // Sign in success, update UI with the signed-in user's information
                                    Log.d("Loged on!", "signInWithEmail:success");
                                    Toast.makeText(login.this, "Loged On!.", Toast.LENGTH_SHORT).show();
                                    Intent userAcc = new Intent(login.this,menu_activity.class);
                                    startActivity(userAcc);
                                } else {
                                    // If sign in fails, display a message to the user.
                                    Log.w("Login Failed!", "signInWithEmail:failure", task.getException());
                                    Toast.makeText(login.this, "Authentication failed.", Toast.LENGTH_SHORT).show();
                                }

                                // ...
                            }
                        });
        }

如果有人能帮忙,我会很高兴的。提前感谢!

共有1个答案

勾喜
2023-03-14

多亏了@BobSnyder,问题出在了api上。你必须安装带有(Google API)插件的API。

 类似资料:
  • 使用,https://github.com/firebase/FirebaseUI-Android/tree/master/codelabs/chat作为登录的参考,我在键入时似乎遇到了问题 我只能键入Auth的提供者,而不能键入,为什么会这样,它提示我键入社会提供者。

  • 当使用Firebase身份验证匿名帐户时,它偶尔会在系统中创建一个新的用户ID,有时它会使用相同的用户ID。我真的希望每次都能创建相同的用户ID,这样匿名用户仍然可以在应用程序中维护相同的进度/数据。这实际上是我开始使用Firebase的原因。即使在重新启动应用程序等之后,我如何始终维护一个匿名帐户来保持相同的用户ID? 我希望用户每次以访客身份玩游戏时都能获得相同的ID。我看到有些应用程序在卸载

  • 我试着用laravel做一个登录/注册的简单应用。。。我目前使用的是5.2版本的laravel。 在路线上,我写道: 所以现在当我尝试注册用户在localhost:8888/auth/register-我填写字段,但当我点击注册然后我得到错误消息: 用户中的FatalErrorException。php第8行:找不到类“lightlight\Foundation\Auth\User” 那么我如何在

  • 本文向大家介绍firebase-authentication Google Plus登录身份验证,包括了firebase-authentication Google Plus登录身份验证的使用技巧和注意事项,需要的朋友参考一下 示例 使用Plus登录验证用户 onCreate onStart() 获取资料信息 使用Firebase进行身份验证, onActivityResult 登出      

  • 该应用程序应该接受用户电子邮件和密码,并使用Firebase身份验证作为后端。我使用像素2作为模拟器。每次应用程序处理登录功能时,它都会崩溃。 下面是Java文件和gradle文件 Java文件:

  • 我一直在寻找使用各种AWS服务来处理我们下一个主要项目的基础设施。我们开始研究EC2实例上的docker容器,但在进一步研究AWS Lambda之后,这似乎是一条值得探索的道路。 使用AWS Lambda范例,我们只需使用Lambda函数作为逻辑粘合剂,将数据和事件(来自其他AWS服务)保存在一起。 例如,如果我们产品的用户创建了一个新记录,AWS Lambda可以在该事件中触发,我们可以调用La