private Task <PhoneNumberVerificationResult> VerifyPhoneNumberAsync(Firebase.Auth.FirebaseAuth auth, IPhoneMultiFactorInfo phoneMultiFactorInfo, IMultiFactorSession multiFactorSession, TimeSpan timeout, bool?requiresSmsValidation = null)
        {
            var activity = CrossCurrentActivity.Current.Activity ?? throw new NullReferenceException("current activity is null");

            var tcs       = new TaskCompletionSource <PhoneNumberVerificationResult>();
            var callbacks = new Callbacks(tcs);

            var builder = PhoneAuthOptions.NewBuilder(auth)
                          .SetActivity(activity)
                          .SetCallbacks(callbacks)
                          .SetMultiFactorHint(phoneMultiFactorInfo.ToNative())
                          .SetMultiFactorSession(multiFactorSession.ToNative())
                          .SetTimeout(new Java.Lang.Long((long)timeout.TotalMilliseconds), TimeUnit.Milliseconds);

            if (requiresSmsValidation.HasValue)
            {
                builder.RequireSmsValidation(requiresSmsValidation.Value);
            }

            auth.FirebaseAuthSettings.SetAutoRetrievedSmsCodeForPhoneNumber(null, null);

            PhoneAuthProvider.VerifyPhoneNumber(builder.Build());

            return(tcs.Task);
        }
Example #2
0
        public Task VerifyPhoneNumberAsync(Activity activity, string phoneNumber)
        {
            var callbacks = new PhoneVerificationStateChangeCallbacks(onCodeSent: x => _verificationId = x.VerificationId);
            var options   = PhoneAuthOptions
                            .NewBuilder()
                            .SetPhoneNumber(phoneNumber)
                            .SetTimeout(new Long(60), TimeUnit.Seconds)
                            .SetActivity(activity)
                            .SetCallbacks(callbacks)
                            .Build();

            PhoneAuthProvider.VerifyPhoneNumber(options);
            return(Task.CompletedTask);
        }