【问题标题】:Java.Lang.NullPointerException: Attempt to invoke virtual method 'void com.google.firebase.auth.FirebaseAuth.zzaJava.Lang.NullPointerException:尝试调用虚拟方法'void com.google.firebase.auth.FirebaseAuth.zza
【发布时间】:2020-04-29 01:08:39
【问题描述】:

我正在尝试按照 Xamarin Android 上的 Google official documentation 使用电话号码在 Android 上使用 Firebase 实现身份验证。但是我收到了这个错误:

Java.Lang.NullPointerException: 'Attempt to invoke virtual method 'void com.google.firebase.auth.FirebaseAuth.zza(java.lang.String, long, java.util.concurrent.TimeUnit, com.google.firebase.auth.PhoneAuthProvider$OnVerificationStateChangedCallbacks, android.app.Activity, java.util.concurrent.Executor, boolean)' on a null object reference'

我创建了一个 Android 工作室项目并且发送短信没有错误。我本来应该昨天发布应用程序的,但我被困在这里了。

注意:我已经引用了Xamarin.GooglePlayServices.BaseXamarin.Firebase.Auth:71.1605.0,并且我有一个带有推送通知FCM 的代码,它工作正常。

这是我的MainActivity.OnCreate 代码:

        TabLayoutResource = Resource.Layout.Tabbar;
        ToolbarResource = Resource.Layout.Toolbar;

        base.OnCreate(savedInstanceState);

        Xamarin.Essentials.Platform.Init(this, savedInstanceState);
        global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
        LoadApplication(new App());

        Xamarin.FormsMaps.Init(this, savedInstanceState);

        FirebaseApp firebaseApp = FirebaseApp.InitializeApp(this);

        var firebaseAuthInstance = FirebaseAuth.GetInstance(firebaseApp);

        if(firebaseAuthInstance == null)
        {
            firebaseAuthInstance = new FirebaseAuth(firebaseApp);
        }

        verificationStateChangedCallbacks = new VerificationStateChangedCallbacks(); //This class is below.

        PhoneAuthProvider.Instance.VerifyPhoneNumber("+16505559999", 60, TimeUnit.Seconds, this //The activity, verificationStateChangedCallbacks); // I got the error here

班级VerificationStateChangedCallbacks:

public class VerificationStateChangedCallbacks : OnVerificationStateChangedCallbacks
    {
        public override void OnVerificationCompleted(PhoneAuthCredential p0)
        {
        }

        public override void OnVerificationFailed(FirebaseException p0)
        {
        }

        public override void OnCodeSent(string p0, ForceResendingToken p1)
        {
            base.OnCodeSent(p0, p1);
        }
    }

【问题讨论】:

    标签: firebase xamarin.forms xamarin.android


    【解决方案1】:

    我只是通过更改来修复它

    PhoneAuthProvider.Instance.VerifyPhoneNumber("+16505559999", 60, TimeUnit.Seconds, this, verificationStateChangedCallbacks);

    PhoneAuthProvider.GetInstance(firebaseAuthInstance).VerifyPhoneNumber("+16505559999", 60, TimeUnit.Seconds, this, verificationStateChangedCallbacks);

    2 天,我没想过要换。

    【讨论】:

    • 感谢分享。不要忘记接受答案哦~
    【解决方案2】:

    您能否检查“PhoneAuthProvider.Instance”是否为空对象。如果是,请检查您的文件“google-services.json”。通常“FirebaseAuth.GetInstance(firebaseApp)”不会返回 null。

    【讨论】:

    • 我已经使用相同的 Firebase 项目将 google-services.json 设置为 GoogleServicesJson buildAction。这就是为什么我对FCM 服务没有任何问题。但是我在调​​试模式下覆盖了PhoneAuthProvider.Instance,它不为空。但顺便说一句,我只是将其更改为 PhoneAuthProvider.GetInstance(firebaseAuthInstance),它现在正在工作。
    猜你喜欢
    • 1970-01-01
    • 2022-06-10
    • 2018-04-03
    • 2020-10-31
    • 2018-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-10
    相关资源
    最近更新 更多