首页 > 解决方案 > Firebase 身份验证中此代码的目的是什么?

问题描述

我查看了 FirebaseUI 登录方法。在说明的第一页有一个“使用预构建的 UI 登录”,如下所示:使用 FirebaseUI 轻松添加登录到您的 Android 应用程序。该页面包含以下代码:

// 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

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

标签: androidfirebasefirebase-authentication

解决方案


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

  1. 使用所谓的无头 API 并在此基础上构建您自己的 API 和流程。
  2. 使用 FirebaseUI,它是一个 UI 库,(在本例中)封装了 Firebase 身份验证登录流程。正如您在其开源实现中看到的那样,它在后台调用 Firebase 身份验证 API 。

您展示的第一个片段配置 FirebaseUI,具体说明启用了哪些提供程序(Google、Facebook、电子邮件+密码、电话、Twitter),然后启动一个活动以启动流程。

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

如果您使用的是 FirebaseUI,请按照文档在其 repo中配置电话号码身份验证。据我所见,这不需要onActivityResult您共享。该流程很可能已经封装在 FirebaseUI 本身中。


推荐阅读