首页 > 解决方案 > Firebase AuthUI:如何注册 PhoneAuthProvider OnVerificationStateChangedCallbacks

问题描述

我在我的应用程序中使用 Firebase AuthUI 使用谷歌、电话和电子邮件方法登录。身份验证成功后,我需要将数据存储在 Firestore 上。

我用于启动 Firebase Auth Screen 的代码列出了差异提供程序:

 startActivityForResult(
     AuthUI.getInstance()
           .createSignInIntentBuilder()
           .setIsSmartLockEnabled(false, true)
           .setLogo(R.drawable.yam_logo_orange_512)
           .setAvailableProviders(Arrays.asList(
               new AuthUI.IdpConfig.EmailBuilder().build(),
               new AuthUI.IdpConfig.GoogleBuilder().build(),
               new AuthUI.IdpConfig.PhoneBuilder().build()
            )).build(),
RC_SIGN_IN);

但是,正如我在上面写的那样——我使用的是提供默认按钮和 UI 的 AuthUI——我没有电话号码字段的所有权,电话号码也一样。

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)    {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == RC_SIGN_IN) {
        IdpResponse response = IdpResponse.fromResultIntent(data);
        String providerType =  response.getProviderType();

        if (resultCode == RESULT_OK) {
            FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
            if (user != null) {
                switch (providerType) {
                    case Constants.PROVIDER_GOOGLE:
                        account = GoogleSignIn.getLastSignedInAccount(this);
                        if (account != null) {
                            firebaseAuthWithGoogle(account, response.isNewUser());
                        }
                        break;

                    case Constants.PROVIDER_PHONE:
                        if(null!=phoneAuthCredential){
                            signInWithPhoneAuthCredential(phoneAuthCredential, response.isNewUser());
                        }
                        break;

                    case Constants.PROVIDER_EMAIL:
                        break;

                }
            }
        }
    }
}

请帮我完成这个。我是否需要制作自定义屏幕来获取号码,然后注册 PhoneAuth 回调?

谢谢, 卡纳克

标签: androidfirebasefirebase-authentication

解决方案


只需制作一个自定义屏幕 (UI),让您拥有这一切的所有权,从而轻松访问文本字段,还包括一些:

if (requestCode == RC_SIGN_IN) {
println(requestCode)
// 
}

这里也是:

if (user != null) {
println(user)
//
}

只是为了进一步了解您可能在哪里出错。此外,一旦您通过打印值查看错误所在的位置,您应该能够注册 PhoneAuth 回调。


推荐阅读