Firebase身份验证中此代码的目的是什么?

时间:2018-11-21 22:28:12

标签: android firebase firebase-authentication

我查看了FirebaseUI登录方法。在说明的第一页上,有一个“使用预构建的UI登录”,如下所示:Easily add sign-in to your Android app with FirebaseUI。该页面包含以下代码:

// Choose authentication providers
List<AuthUI.IdpConfig> providers = Arrays.asList(
        new AuthUI.IdpConfig.EmailBuilder().build(),
        new AuthUI.IdpConfig.PhoneBuilder().build(),
        new AuthUI.IdpConfig.GoogleBuilder().build(),
        new AuthUI.IdpConfig.FacebookBuilder().build(),
        new AuthUI.IdpConfig.TwitterBuilder().build());

// Create and launch sign-in intent
startActivityForResult(
        AuthUI.getInstance()
                .createSignInIntentBuilder()
                .setAvailableProviders(providers)
                .build(),
        RC_SIGN_IN);

然后

@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);

        if (resultCode == RESULT_OK) {
            // Successfully signed in
            FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
            // ...
        } else {
            // Sign in failed. If response is null the user canceled the
            // sign-in flow using the back button. Otherwise check
            // response.getError().getErrorCode() and handle the error.
            // ...
        }
    }
}

但是,当我看他们如何通过SMS通过电话进行身份验证的示例时,找不到该代码,但是验证仍然有效。 电话验证代码可以在其代码段中看到: PhoneAuthActivity.java

那么我什么时候需要使用此代码,什么时候不需要?这部分的目的是什么?

1 个答案:

答案 0 :(得分:2)

实现Firebase身份验证的主要方法有两种:

  1. 使用所谓的无头API并在此基础上构建自己的API和流程。
  2. 使用FirebaseUI,这是一个UI库,在这种情况下,该库封装了Firebase身份验证登录流程。如您在its open source implementation中所见,它在后台调用了Firebase身份验证API。

您显示的第一个代码段配置了FirebaseUI,具体说明了启用了哪些提供程序(Google,Facebook,Email + Password,电话,Twitter),然后启动了一项活动以启动流程。

第二个片段直接使用Firebase身份验证API来实现部分身份验证流程。

如果您使用的是FirebaseUI,请遵循其仓库中的documentation for configuring phone number auth。据我所见,这不需要您共享的onActivityResult。很有可能该流已经封装在FirebaseUI本身中。