java - FirebaseUI,指定在特定情况下打开特定 Activity (注册后)

标签 java android firebase firebase-authentication firebaseui

我正在使用FirebaseUI进行身份验证来处理身份验证,我想要做的是指定在用户注册(首次登录)时打开某个 Activity ,是否有可能的方法来实现这个?

编辑:这是使用的 FirebaseUi 身份验证:

List<AuthUI.IdpConfig> providers = Arrays.asList(
                                    new AuthUI.IdpConfig.Builder(AuthUI.EMAIL_PROVIDER).build(),
                                    new AuthUI.IdpConfig.Builder(AuthUI.GOOGLE_PROVIDER).build());

                            startActivityForResult(
                                    AuthUI.getInstance()
                                            .createSignInIntentBuilder()
                                            .setIsSmartLockEnabled(false)
                                            .setAvailableProviders(providers)
                                            .setTheme(R.style.LoginTheme)
                                            .setLogo(R.drawable.ic_melomania_blue_light)
                                            .build(),
                                    RC_SIGN_IN);

onActivityResult:

@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == RC_SIGN_IN) {
            if (resultCode == RESULT_OK) {
                // Sign-in succeeded, set up the UI
                Toast.makeText(this, "Signed in!", Toast.LENGTH_SHORT).show();
                FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
            } else if (resultCode == RESULT_CANCELED) {
                // Sign in was canceled by the user, finish the activity
                Toast.makeText(this, "Sign in canceled", Toast.LENGTH_SHORT).show();
                finish();
            }
        }}

最佳答案

我建议查看docs 。以下是如何处理 Activity 响应的示例:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    // RC_SIGN_IN is the request code you passed into startActivityForResult(...) when starting the sign in flow.
    if (requestCode == RC_SIGN_IN) {
        IdpResponse response = IdpResponse.fromResultIntent(data);

        // Successfully signed in
        if (resultCode == RESULT_OK) {
            startActivity(SignedInActivity.createIntent(this, response)); // <--- This is what you are looking for!
            finish();
        } else {
            // Sign in failed
            if (response == null) {
                // User pressed back button
                showSnackbar(R.string.sign_in_cancelled);
                return;
            }

            if (response.getError().getErrorCode() == ErrorCodes.NO_NETWORK) {
                showSnackbar(R.string.no_internet_connection);
                return;
            }

            showSnackbar(R.string.unknown_error);
            Log.e(TAG, "Sign-in error: ", response.getError());
        }
    }
}

要具体检查这是否是首次用户,请查看 this example :

FirebaseUserMetadata metadata = auth.getCurrentUser().getMetadata();
if (metadata.getCreationTimestamp() == metadata.getLastSignInTimestamp()) {
    // The user is new, show them a fancy intro screen!
} else {
    // This is an existing user, show them a welcome back screen.
}

关于java - FirebaseUI,指定在特定情况下打开特定 Activity (注册后),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49029445/

相关文章:

javascript - 获取下载 URL 并使其可供其他组件使用

java - Java 程序中的数组异常行为

java - 每个选项卡上的 adview(tabhost、admob)

java - 发送网格 v3 : "Substitutions may not be used with dynamic templating"

android - 在 android google maps API v2 中隐藏标记信息窗口

android - 如何从 Flutter 中的字符串中提取表情符号?

android - 必须设置图像 Assets 图标名称

java - 无法在 PLAY 2.0 中使用外键创建复合主键

javascript - 如何在方法(Vuefire)中访问 firebase prop 的值?

firebase - 如何将photoUrl添加到当前用户?